// 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
。
那么将 event
作为参数传递给事件处理程序的正确方法是什么,或者如何在不传递参数的情况下在处理程序中获取事件?
编辑
我知道 addEventListener
和 jQuery
,请提供一个将事件传递给 inline
事件处理程序的解决方案。
最佳答案
传递事件
对象:
<p id="p" onclick="doSomething(event)">
获取被点击的子元素
(应该与event
参数一起使用:
function doSomething(e) {
e = e || window.event;
var target = e.target || e.srcElement;
console.log(target);
}
传递元素
本身(DOMElement):
<p id="p" onclick="doThing(this)">
查看 jsFiddle 上的实例.
您可以如上所述指定事件
的名称,但您的处理程序也可以访问event
参数,如here 所述。 :“当事件处理程序被指定为 HTML 属性时,指定的代码将被包装到具有以下参数的函数中”。链接中有更多其他文档。
关于javascript - 如何将事件作为参数传递给 JavaScript 中的内联事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16404327/