【发布时间】:2020-07-12 10:21:20
【问题描述】:
我有一个存储在名为elementList 的变量中的元素列表,并希望为每个元素添加一个事件侦听器。所以我创建了以下循环:
for (i = 0; i < elementList.length; i++) {
elementList[i].addEventListener('click', myFunction, false);
}
问题?我需要将i 作为参数传递给myFunction。在网上做了一些研究后,我找到了这个解决方案:
for (i = 0; i < elementList.length; i++) {
elementList[i].addEventListener('click', (function(i){
return function(){
myFunction(i);
};
}(i)), false);
}
代码运行良好——但仍然存在问题。稍后在我的代码中,我需要再次删除事件侦听器,这是通过 removeEventListener() 方法完成的,经过更多研究后我发现。
但是这个方法需要一个命名的外部函数——它不适用于匿名函数。所以它适用于我上面的第一个例子,但不适用于第二个。
所以我的问题是:如何将事件侦听器添加到元素列表中,这样我就可以同时做这两件事:
- 将参数传递给我的函数
- 在代码后面再次删除事件监听器
感谢您的帮助!
【问题讨论】:
-
@EmielZuurbier 我不确定。我知道如何在
addEventListener函数中传递参数,只是不知道如何以以后可以再次删除的方式进行。您提供的问题是否也提供了回答第二点的链接?
标签: javascript html function dom addeventlistener