首页 > 关于this的实际问题

关于this的实际问题


注释部分:为什么只能写this,不能写aTR[i]?


onmouseover事件是由aTR[i] 这个对象触发的,所以当触发这个事件,调用函数时,this就是aTR[i].

为什么不能用aTR[i]呢?因为作用域的理解问题。这里的i实际上是个全局变量。你在for外面调用window.i你会发现值是aTR.length。所以当你触发onmouseover事件的时候那个aTR[i]等同于aTR[aTR.length]。
正确的方法是用this或者这样写

(function(item){
    item.onmouseover = function(){
        item.style ...... 
    }
})(aTR[i]);

但是显然第二种方法很别扭。


楼上说的正确,其实也可以(function(i){
aTR[i] .onmouseover = function(i){
aTR[i].style ......
}
})(i);

【热门文章】
【热门文章】