var orders=document.getElementsByClassName("order");
for(var i=0;i<orders.length;i++){
orders[i].index=i;
orders[i].onclick=function(){
console.log(orders[i].index);
}
}
报错如下所示:
var orders=document.getElementsByClassName("order");
for(var i=0;i<orders.length;i++){
orders[i].index=i;
orders[i].onclick=function(){
console.log(this.index);
}
}
而将orders[i]改成this的时候却能够正常运行。
我的疑问是this指向的是当前的对象,而当前对象就是orders[i],为什么我换了一下就报错了呢?
常见闭包问题。。
因为
click
时的i
已经是为orders.length了。所以orders[i]是undefined。this的话不同,就是当前对象。