Javascript 同样的addEventListener会工作吗?

Javascript 同样的addEventListener会工作吗?,javascript,addeventlistener,Javascript,Addeventlistener,单击elemen,是否会调用func两次 如果是。。。是否有解决方案检查elemen上是否存在相同的事件侦听器?func将不单击调用两次,否;但请继续阅读,了解详细信息并回答“明白了” 从规范中选择: 如果使用相同的参数在同一个EventTarget上注册了多个相同的eventlistener,则会丢弃重复的实例。它们不会导致调用两次EventListener,因为它们被丢弃,所以不需要使用removeEventListener方法删除它们 (我的重点) 下面是一个例子: var target

单击
elemen
,是否会调用
func
两次


如果是。。。是否有解决方案检查
elemen
上是否存在相同的事件侦听器?

func
单击调用两次,否;但请继续阅读,了解详细信息并回答“明白了”

从规范中选择:

如果使用相同的参数在同一个
EventTarget
上注册了多个相同的
eventlistener
,则会丢弃重复的实例。它们不会导致调用两次
EventListener
,因为它们被丢弃,所以不需要使用
removeEventListener
方法删除它们

(我的重点)

下面是一个例子:

var target=document.getElementById(“目标”);
target.addEventListener(“单击”,foo,false);
target.addEventListener(“单击”,foo,false);
函数foo(){
var p=document.createElement(“p”);
p、 innerHTML=“每次单击仅显示一次,但我们注册了两次处理程序。”;
文件.正文.附件(p);
}

我想补充一下@T.J.Crowler提供的伟大答案

我有一个特定的任务,需要为同一事件向HTML元素添加两次相同的回调。的确,第二个会丢弃第一个,但是:

如果在同一台计算机上注册了多个相同的EventListener 如果EventTarget具有相同的参数,则重复的实例为 丢弃的。它们不会导致EventListener被调用两次,并且 不需要使用removeEventListener()手动删除它们 方法

但是请注意,当使用匿名函数作为处理程序时, 这样的侦听器将不完全相同,因为匿名函数是 即使使用相同的不变源代码定义,也不完全相同 简单地重复调用,即使在循环中也是如此

资料来源:(截至2020年2月5日)

因此,如果第二个EventListener将其处理程序作为匿名函数,它不会放弃第一个。因此,它将被简单地称为两次


循环解决方案的替代方案。

我不是OP,但这个答案也帮了我很多。非常感谢。我认为第一个代码片段需要
片段。否则会出现错误:无法读取的属性“addEventListener”null@Wyck:谢谢!!事实上,两年前,当我编辑答案以提供堆栈片段时,我似乎忘记了第一个答案中相当重要的一部分。:-)我相信@T.J.Crowder的答案已经使用了匿名函数作为例子,它们只是在loop@Learning2Code非常感谢。我没注意到。我只是回来分享我的帮助,因为循环解决方案不适合我。但我很确定我只是实施了错误的方法。
elemen.addEventListener('click',func,false);
elemen.addEventListener('click',func,false);