如何将事件作为参数传递给JavaScript中的内联事件处理程序?
// 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>
还有一些类似的问题被问到。
There are some similar questions have been asked.
但是在我的代码中,我试图获得被点击的子元素,例如 a
或 span
。
But in my code, I'm trying to get child elements who's been clicked, like a
or span
.
那么将事件
作为参数传递给事件的正确方法是什么?处理程序,或者如何在没有传递参数的情况下处理事件?
So what is the correct way to pass event
as an argument to event handler, or how to get event inside handler without passing an argument?
我知道 addEventListener
和 jQuery
,请提供一个解决方案,将事件传递到 inline
事件处理程序
I'm aware of addEventListener
and jQuery
, please provide a solution for passing event to inline
event hander.
传递事件
/ p>
to pass the event
object:
<p id="p" onclick="doSomething(event);">
获取点击的子元素(应与事件$一起使用c $ c>参数:
to get the clicked child element (should be used with event
parameter:
function doSomething(e) {
e = e || window.event;
var target = e.target || e.srcElement;
console.log(target);
}
传递元素本身(DOMElement):
to pass the element itself (DOMElement):
<p id="p" onclick="doThing(this);">
查看 jsFiddle