如何将事件作为参数传递给JavaScript中的内联事件处理程序? [英] How to pass event as argument to an inline event handler in JavaScript?

查看:702
本文介绍了如何将事件作为参数传递给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);">

获取点击的子元素(应与事件参数:

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

这篇关于如何将事件作为参数传递给JavaScript中的内联事件处理程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆