当我使用简单的for循环时,addEventListener在for循环中效果很好。
但是当我使用for-in循环时,会出现类似
未捕获的TypeError:checklist [i] .addEventListener不是函数
这是我的工作代码。
var checklist = document.querySelectorAll(".checklist");
for (var i = 0, len = checklist.length; i < len; i += 1) {
checklist[i].addEventListener('change', function (event) {
alert('test');
});
}
这是我的错误代码。
var checklist = document.querySelectorAll(".checklist");
for (var i in checklist) {
checklist[i].addEventListener('change', function (event) {
alert('test');
});
}
我不知道两个代码之间有什么区别。
请帮我。谢谢!
最佳答案
问题是for-in
循环遍历数组或对象的所有可枚举属性。因此,如果您在控制台中记录变量,您将看到元素的索引以及其他属性,例如数组的length
,keys
,values
和checklist[length]
或checklist[keys]
不是DOM元素。因此,您无法向他们添加事件监听器。
关于javascript - addEventListener在简单的for循环中工作,但在for-in循环中不工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46518787/