gpt4 book ai didi

javascript - for 循环中的 Addeventlistener 有效,但调试器向我抛出一个未捕获的 TypeError : Cannot read property 'addEventListener' of undefined

转载 作者:行者123 更新时间:2023-12-03 11:33:31 27 4
gpt4 key购买 nike

所以我的代码可以按我想要的方式工作,但是大多数(IE 除外)调试器都会向我抛出此错误:

未捕获类型错误:无法读取未定义的属性“addEventListener”

这是代码:

//Get all elements with the class 'order' and attach eventlisteners

var products=document.getElementsByClassName('order');
for (i=0; i<=products.length; i++){
if (products) {
products[i].addEventListener('keyup', delegate(), false);
products[i].addEventListener('click', delegate(), false);
};

}

function delegate(){
return function(){
ch();
}
}

这段代码在window.onload中!我不太担心这个错误,因为我的代码运行得很好。我仍然是一名初级程序员,我真的很想了解为什么会发生这种情况。另外,我尝试过闭包,它们可以工作,但错误仍然存​​在。所以请不要引用任何 javascript 闭包文章!

我的问题:我的代码是否有问题或者调试器是否敏感?

提前致谢。

最佳答案

该错误是在上次迭代期间引发的。如果products.length是 8(例如),有效索引是 0 到 7。您的代码还使用 8 作为索引。您必须排除最后一项。只需更新您的 for 即可迭代到 i<products.length而不是i<=products.length .

//Get all elements with the class 'order' and attach eventlisteners

var products=document.getElementsByClassName('order');
for (i=0; i<products.length; i++){
if (products) {
products[i].addEventListener('keyup', delegate(), false);
products[i].addEventListener('click', delegate(), false);
};

}

function delegate(){
return function(){
ch();
}
}

关于javascript - for 循环中的 Addeventlistener 有效,但调试器向我抛出一个未捕获的 TypeError : Cannot read property 'addEventListener' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26633104/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com