当前位置: 首页 > 面试题库 >

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

南宫云
2023-03-14
问题内容

// 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事件处理程序的解决方案。


问题答案:

传递event对象:

<p id="p" onclick="doSomething(event)">

获取被点击的孩子element(应与event参数一起使用:

function doSomething(e) {
    e = e || window.event;
    var target = e.target || e.srcElement;
    console.log(target);
}

传递element自身(DOMElement):

<p id="p" onclick="doThing(this)">


 类似资料:
  • 有人问过一些类似的问题。 但在我的代码中,我试图获取被点击的子元素,比如或。 那么,将

  • 问题内容: 所以我试图使反应与ES6语法一起工作。在ES5中,我有setInitialState,而没有使用函数绑定语法的构造函数。我有一个价格列表,该价格是任意的,并且我希望状态在输入元素发生更改时发生变化。但是正确的价格必须改变。 我什至不确定这是否是正确的方法。有人可以告诉我最近应做的事情吗? 这是我的代码: 这是错误… 问题答案: 您绑定的功能不正确 在构造函数中,您无需指定参数,只需要像

  • 所以我试图用ES6语法使反应工作。在ES5中,我没有使用函数绑定语法的构造函数。我有一个任意的价格列表,当输入元素改变时,我希望状态改变。但是正确的价格必须改变。 我甚至不确定这是正确的方法。有人能告诉我最近应该怎么做吗? 这是我的代码: 这就是错误...

  • 问题内容: 我有一个在React中创建的组件,该组件可以抽象出我的应用程序中的某些样式。我在两种不同的上下文中使用它- 一种用于提交登录表单,另一种用于导航到注册页面(以及将来可能的其他上下文)。 我试图弄清楚如何将事件处理程序从父组件传递到。我想为登录表单调用一个处理程序,但是为导航按钮调用一个处理程序。这可能吗? 我试过像这样调用组件: 我也尝试过删除arrow函数,这只会导致该函数在加载组件

  • 问题内容: 我的链接上有一个属性: 指向JavaScript中的此事件处理程序: 由于事件对象“ evt”没有传递给参数,是否仍然可以获得该对象? 我试过和,但两者都是。 任何的想法? 问题答案: 由于未从参数传递事件对象“ evt”,是否仍然可以获得该对象? 不,不可靠。IE和其他一些浏览器以(not )的形式提供它,但这是非标准的,并非所有浏览器都支持(众所周知,Firefox不支持)。 您最

  • 问题内容: 我试图将我的数据库对象传递给我的处理程序,而不是具有全局对象。但是我不知道这是否可行,我使用的是Gorilla Mux软件包,我可以看到它把闭包作为第二个参数。 然后定义了我可以使用的参数,理想情况下,我希望拥有这样的第三个参数。 有解决方法吗?还是我需要一个全局数据库对象?我是Go的新手,所以请详细说明可能的答案。 问题答案: 欢迎来到。 可以使用全局变量,特别是数据库对象。 但是,