javascript中关于this的一个用法

2025-02-24 21:35:53
推荐回答(2个)
回答1:

这个问题设计一个闭包的概念...

因为funtion里面是个内部函数...其实在内部函数里面这个i的值都是aTr.length的值..

所以在

for(var i=0;i{
aTr[i].onmouseover=function ()
{
//你可以在这里测试一下
alert(i);//你会发现i一直是aTr.length
this.style.background="red"
}//如果这里用的是aTr[i],事实上i的值就是aTr.length,假如length是5,其实这里就是aTr[5].style.background="red" 所以其他的元素都没有被绑上,但是又没有aTr[5]这个元素(长度5,那坐标就是0-4,没有5),所以哪个都没起作用
}
aTr[0].onmouseover=function ()
{aTr[0].style.background="red"}//这个就没什么好说了,你都固定aTr[0]了

这个不明白的,你去看一下闭包的概念

回答2:






白菜编辑部



onload = function ()
    {
    var oTab = document.getElementById ("tab");
    var aTr = oTab.rows;
    for ( var i = 0; i < aTr.length; i++)
    {
     aTr[i].i = i;
    aTr[i].onmouseover = function ()
    {
     //这里的this为什么不能换成“aTr[i]”
     // 因为在里面的i都是不存在的,没有定义的,报错
     // 匿名函数,闭包问题,除非这样选择
    aTr[this.i].style.background = "red"
    }
    }
    }





1
2


3
4