javascript - 如何将事件作为参数传递给 JavaScript 中的内联事件处理程序?

标签 javascript events event-handling parameter-passing inline

// 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>

有人问过一些类似的问题。

但是在我的代码中,我试图获取被点击的子元素,例如 aspan

那么将 event 作为参数传递给事件处理程序的正确方法是什么,或者如何在不传递参数的情况下在处理程序中获取事件?

编辑

我知道 addEventListenerjQuery,请提供一个将事件传递给 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/

相关文章:

javascript - 在 Node.js 中将数据传递到子路由时出现问题

javascript - 在 PhoneGap for Android 上捕获返回键

javascript - 如何禁用 textarea 上的 ENTER 键?

javascript - 如何为动态插入的 'input' 文本元素正确捕获 onchange 或 onkeyup 事件?

javascript - Leadfoot moveMouseTo 在元素存在时需要 X/Y 偏移

JavaScript 日期数学不起作用

javascript - 滚轮并不总是滚动页面

java - Editable JCombobox avoid multiple DocumentEvents when the selection change from the popup

python - 使用 Python 的简单动态 Web 应用程序

c# - 如何拖动图片框控件