Javascript addEventListener找到了什么标签

时间:2019-03-26 04:20:07

标签: javascript html addeventlistener

我将Javascript事件侦听器添加到一些html标记。我必须对不同的标签执行相同的处理。使用通用功能会很好。

(1)是否可以将变量传递给传递给addEventListener的函数。

 const theNode = document.querySelector(
  "div.action-bar:not(.usertip-mobile-action-bar) div.dropdown button.button-white");
 theNode.addEventListener("click",
                           processClickReply,
                           false);

(2)在我的函数processClickReply中,“ this”是否表示“ theNode”?

2 个答案:

答案 0 :(得分:1)

1:使用匿名函数:

theNode.addEventListener("click", function() { processClickReply(value) }, false);

2:是

答案 1 :(得分:1)

  

是否可以将变量传递给传递给addEventListener的函数。

是的,有两种方法:

1)通过闭包(但请注意,$request->only(['question', 'answer']); 现在在闭包中是this,而不是在theNode中,因此您可能想显式传递它-或记住它是在processClickReply中)

evt.target

2)通过绑定(在这里我们可以将let myVar = 84; theNode.addEventListener( "click", function(evt) { processClickReply(evt, this, myVar); }, false ); 显式设置为this,将theNode显式设置为第一个参数):

myVar
  

“ this”是否在我的函数processClickReply中引用“ theNode”?

在您的代码中,如果将let myVar = 84; theNode.addEventListener( "click", processClickReply.bind(theNode, myVar), false ); 声明为传统函数,则可以。如果它被定义为箭头函数,则为否。

在两种传递参数的方法中,您可以看到它们两种都如何破坏processClickReply的自然约束力,以及可以采取哪些对策。

还要注意,绑定和闭包将为您提供不同的行为:如果以后更改this,则更改将反映在闭包代码中;但是绑定代码当时使用myVar的值。