如何将触发`onclick`事件的元素的id传递给事件处理函数
如何将触发onclick
事件的元素的id传递给事件处理函数。
我正在做这样的事情 –
<link onclick="doWithThisElement(id_of_this_element)" />
而不是传递ID,你可以传递这个元素本身:
<link onclick="doWithThisElement(this)" />
或者,如果你坚持通过ID:
<link id="foo" onclick="doWithThisElement(this.id)" />
这里是JSFiddle演示: http : //jsfiddle.net/dRkuv/
触发事件的元素可能与您绑定处理程序的元素不同,因为事件会冒泡DOM树 。
所以,如果你想获得事件处理程序绑定的元素的ID,可以使用this.id
( this
指的是元素)轻松this.id
。
但是,如果您想获取事件发生的元素,则必须在W3C兼容的浏览器中使用event.target
,在IE 8及以下版本中使用event.srcElement
。
我将避免在onXXXX
HTML属性中编写大量的JavaScript。 我只会传递event
对象,并把代码提取到处理程序中的元素(或在一个额外的function):
<div onlick="doWithThisElement(event)">
然后处理程序看起来像这样:
function doWithThisElement(event) { event = event || window.event; // IE var target = event.target || event.srcElement; // IE var id = target.id; //... }
我build议在quirksmode.org上阅读关于事件处理的优秀文章 。
顺便说一句
<link onclick="doWithThisElement(id_of_this_element)" />
( <link>
是一个只能出现在<head>
的元素,绑定一个事件处理程序(如果可能的话)将没有任何效果)。
这是一个非标准的,但跨浏览器的方法,如果你不想传递任何参数,可能会有用:
HTML:
<div onclick=myHandler() id="my element's id">→ Click Here! ←</div>
脚本:
function myHandler(){ alert(myHandler.caller.arguments[0].target.id) }
演示: http : //codepen.io/mrmoje/pen/ouJtk
我会build议使用jQuery的队友。
有了jQuery,你就可以通过获取这个元素的id了
$(本).attr( '身份证');
没有jQuery,如果我没有记错的话,我们曾经用a访问id
this.id
希望帮助:)
用这个:
<link onclick='doWithThisElement(this.attributes["id"].value)' />
在onclick JavaScript的上下文中, 这是指当前元素(在本例中是整个HTML元素链接 )。
<!DOCTYPE html> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js"></script> <script type="text/javascript" src="jquery-2.1.0.js"></script> <script type="text/javascript" > function openOnImageClick(event) { //alert("Jai Sh Raam"); // document.getElementById("images").src = "fruits.jpg"; var target = event.target || event.srcElement; // IE console.log(target); console.log(target.id); var img = document.createElement('img'); img.setAttribute('src', target.src); img.setAttribute('width', '200'); img.setAttribute('height', '150'); document.getElementById("images").appendChild(img); } </script> </head> <body> <h1>Screen Shot View</h1> <p>Click the Tiger to display the Image</p> <div id="images" > </div> <img id="muID1" src="tiger.jpg" width="100" height="50" alt="unfinished bingo card" onclick="openOnImageClick(event)" /> <img id="myID2" src="sabaLogo1.jpg" width="100" height="50" alt="unfinished bingo card" onclick="openOnImageClick(event)" /> </body> </html>