// this e works document.getElementById(“p”).oncontextmenu = function(e) { e = e || window.event; var target = e.target || e.srcElement; console.log(target); };
// this e is undefined function doSomething(e) { e = e || window.event; var target = e.target || e.srcElement; console.log(target); } <p id="p" onclick="doSomething(e)"> <a href="#">foo</a> <span>bar</span> </p>
也有人提出过类似的问题。
但是在我的代码中, 我试图获取被单击的子元素,例如a或span。
a
span
那么event作为参数传递给事件处理程序的正确方法是什么,或者如何在处理程序内部获取事件而不传递参数呢?
event
我知道addEventListener和jQuery,请提供将事件传递给inline事件处理程序的解决方案。
addEventListener
jQuery
inline
传递event对象:
<p id="p" onclick="doSomething(event)">
获取被点击的孩子element(应与event参数一起使用:
element
function doSomething(e) { e = e || window.event; var target = e.target || e.srcElement; console.log(target); }
传递element自身(DOMElement):
<p id="p" onclick="doThing(this)">