如何将触发`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.idthis指的是元素)轻松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">&rarr; Click Here! &larr;</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>