为了账号安全,请及时绑定邮箱和手机立即绑定

this的问题,为什么用as[i]没效果,但用this没问题?

for(var i=0;i<as.length;i++){

        as[i].onmouseover = function(){

            

           this.style.background='#ccc';

           //as[i].style.background='#ccc';

        }

    }


正在回答

4 回答

this指的当前对象,可以是鼠标离开的按钮、文本框等,as[i]指的数组内其中一个索引所对应的值,比如as[1,2,3,4],不能给2设置 style样式。

0 回复 有任何疑惑可以回复我~
#1

qq_赵成冬_0

没听明白,this可以用什么替代呢
2016-08-25 回复 有任何疑惑可以回复我~
#2

CTRealize 提问者

非常感谢!
2016-09-05 回复 有任何疑惑可以回复我~

可以用as[i].style设置style样式,但是事件处理程序在这里是一个闭包,所以在事件处理程序里面的i永远等于for循环结束最后一个i的值,这里为5,as[5]不存在,所以没有效果。如果设置循环条件为i<as.length-1;就可以看到,你鼠标移在任何一个li标签上面,都只有最后一个li标签变色,因为i只等于4。

3 回复 有任何疑惑可以回复我~

this指的当前对象,可以是鼠标离开的按钮、文本框等,as[i]指的数组内其中一个索引所对应的值,比如as[1,2,3,4],你可以给as[1],as[2],as[3],as[4],as[5]中的任意一个设置样式,比如as[1].style.background='#ccc';但是你不能给as[i]设置 style样式,as[i].style.background='#ccc';这种方式是错误的。

0 回复 有任何疑惑可以回复我~

不好意思  我没有积分了,回答问题赚个积分

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

this的问题,为什么用as[i]没效果,但用this没问题?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信