Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript addEventListener找到了什么标记_Javascript_Html_Addeventlistener - Fatal编程技术网

Javascript addEventListener找到了什么标记

Javascript addEventListener找到了什么标记,javascript,html,addeventlistener,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("

我将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) 在我的函数过程ClickReply中,“this”是指“theNode”吗

1:使用匿名函数:

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

2:是

1:使用匿名函数:

theNode.addEventListener("click", function() { processClickReply(value) }, false);
2:是的

是否有方法将变量传递给传递给addEventListener的函数

是的,有两种方式:

1) 通过闭包(但请注意,
现在是闭包中的
节点
,但不在
过程中单击回复
,因此您可能希望显式传递它-或者记住它在
evt.target
中):

2) 通过绑定(我们可以显式地将
this
设置为
theNode
并将
myVar
设置为第一个参数):

在我的函数过程ClickReply中,“this”是指“theNode”吗

在您的代码中,如果将
processClickReply
声明为传统函数,则会发生这种情况。如果它被定义为箭头函数,则否

在这两种传递参数的方法中,您可以看到它们是如何破坏
this
的自然绑定的,以及可以采取哪些对策来绕过它

还要注意的是,绑定和闭包会给您带来不同的行为:如果
myVar
后来发生了更改,那么更改将反映在闭包代码中;但是绑定代码当时使用
myVar
的值

是否有方法将变量传递给传递给addEventListener的函数

是的,有两种方式:

1) 通过闭包(但请注意,
现在是闭包中的
节点
,但不在
过程中单击回复
,因此您可能希望显式传递它-或者记住它在
evt.target
中):

2) 通过绑定(我们可以显式地将
this
设置为
theNode
并将
myVar
设置为第一个参数):

在我的函数过程ClickReply中,“this”是指“theNode”吗

在您的代码中,如果将
processClickReply
声明为传统函数,则会发生这种情况。如果它被定义为箭头函数,则否

在这两种传递参数的方法中,您可以看到它们是如何破坏
this
的自然绑定的,以及可以采取哪些对策来绕过它

还要注意的是,绑定和闭包会给您带来不同的行为:如果
myVar
后来发生了更改,那么更改将反映在闭包代码中;但是绑定代码当时使用
myVar
的值

let myVar = 84;
theNode.addEventListener(
  "click",
  processClickReply.bind(theNode, myVar),
  false
);