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]); 但是显然第二种方法很别扭。
onmouseover事件是由aTR[i] 这个对象触发的,所以当触发这个事件,调用函数时,this就是aTR[i].
为什么不能用aTR[i]呢?因为作用域的理解问题。这里的i实际上是个全局变量。你在for外面调用window.i你会发现值是aTR.length。所以当你触发onmouseover事件的时候那个aTR[i]等同于aTR[aTR.length]。
正确的方法是用this或者这样写
但是显然第二种方法很别扭。