Javascript for循环中的Addeventlistener可以工作,但调试器向我抛出了一个未捕获的TypeError:无法读取属性';增补列表器';未定义的

Javascript for循环中的Addeventlistener可以工作,但调试器向我抛出了一个未捕获的TypeError:无法读取属性';增补列表器';未定义的,javascript,loops,typeerror,Javascript,Loops,Typeerror,因此,我的代码可以按我想要的方式工作,但大多数(IE除外)调试器都会向我抛出以下错误: 未捕获的TypeError:无法读取未定义的属性“addEventListener” 代码如下: //Get all elements with the class 'order' and attach eventlisteners var products=document.getElementsByClassName('order'); for (i=0; i<=products.length;

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

未捕获的TypeError:无法读取未定义的属性“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();
    }
}
//使用类“order”获取所有元素并附加eventlisteners
var products=document.getElementsByClassName('order');

对于(i=0;i在上次迭代期间引发错误。如果
products.length
为8(例如),则有效索引为0到7。代码还使用8作为索引。必须排除最后一个索引。
只需将for更新为迭代到
iThanks!这很有效。哇,我以前在使用的其他循环中遇到过这个问题,并在当时立即意识到。但现在我确信它与for循环的主体有关!正如您所见,仍在学习。
//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();
    }
}