我很困惑为什么当我在一个简单的for循环中使用循环元素vs this
关键字时,Javascript会显示不同的行为。例如,当我运行以下循环时,它会给出错误:cannot read property innerHTML of undefined
//get a handle on all digits
var digits = document.getElementsByClassName("digit");
for(var i=0; i<digits.length; i++) {
digits[i].addEventListener("click", function() {
var number = digits[i].innerHTML; //error here
console.log(number);
})
}
但是当我用digits[i]
替换this
时,它运行正常。我的问题是,第二种情况有什么不同? (使用this
)
//get a handle on all digits
var digits = document.getElementsByClassName("digit");
for(var i=0; i<digits.length; i++) {
digits[i].addEventListener("click", function() {
var number = this.innerHTML; //this works as expected
console.log(number);
})
}