javascript为什么没有效果

window.onload = function(){
var x=document.getElementsByTagName("tr");
for(i=0;i<x.length;i++){
x[i].onmouseover=function(){
x[i].style.backgroundColor="#f2f2f2"
};
x[i].onmouseout=function(){
x[i].style.backgroundColor="#fff"
};
}
}

当我把函数块里的x[i]改成this就有效果了,为什么呢

i记录的是x.length这个只,越界了。需要做个壁报指向当前的i值才行,自己找下闭包的知识来看

    window.onload = function () {
        var x = document.getElementsByTagName("div");
        for (i = 0; i < x.length; i++) {
            (function (i) {
                x[i].onmouseover = function () {
                    x[i].style.backgroundColor = "#f2f2f2"
                };
                x[i].onmouseout = function () {
                    x[i].style.backgroundColor = "#fff"
                };
            })(i)
        }
    }

因为参数i不能传到事件函数内 要等for循环结束后在执行事件函数