这是我拥有的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函数被调用时,divListi的值将不再是您期望的值。 i将由词法作用域继承,并且对于所有i处理程序来说都是相同的onclick,并且它将是divList.length,因为这是为其分配的最后一个值。

本质上,您将尝试将第N个div的颜色设置为绿色,但只有N-1个项目。

有几种方法可以克服该问题,但是最简单的方法是仅使用this。 JavaScript引擎将调用您的函数,并将this绑定到触发事件的元素,在这种情况下,将单击div元素。

关于javascript - 在JavaScript中使用“this”或显式对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40155221/

10-09 15:38