这是我拥有的javascript代码,
for (var i=0;i<divList.length;i++){
divList[i].style.backgroundColor="#AA0000";
divList[i].onclick = function(){
this.style.backgroundColor="#00AA00";
}
}
我只是想知道为什么我不能使用
divList[i].style.backgroundColor="#00AA00";
最佳答案
从理论上讲,您可以但实际上不能出于简单的原因。
到onclick函数被调用时,divList
和i
的值将不再是您期望的值。 i
将由词法作用域继承,并且对于所有i
处理程序来说都是相同的onclick
,并且它将是divList.length
,因为这是为其分配的最后一个值。
本质上,您将尝试将第N个div的颜色设置为绿色,但只有N-1个项目。
有几种方法可以克服该问题,但是最简单的方法是仅使用this
。 JavaScript引擎将调用您的函数,并将this
绑定到触发事件的元素,在这种情况下,将单击div
元素。
关于javascript - 在JavaScript中使用“this”或显式对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40155221/