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

为什么将this改成as[i]就不能正常运行,this指代的不就是as[i]吗??

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

                as[i].onmouseover=function(){

                    this.style.backgroundColor='#567';

                };

                as[i].onmouseout=function () {

                    this.style.backgroundColor='#FFF';

                };

                as[i].onclick=function () {

                    asCon=this.innerHTML;

                    title.innerHTML=asCon;



                    menu.style.display='none';


                };


为什么将加粗的this改成as[i]就不能正常运行,this指代的不就是as[i]吗??


正在回答

2 回答

如果你非要用as[i]这种格式,可以这样写 

as[i].onmouseover=function(as,i){
                    return function(){
                        as[i].style.backgroundColor='#567';
                    }
                }(as,i);

这样闭包函数就可以访问外部变量了,给你也网址里面有一点介绍,http://www.jb51.net/article/54397.htm







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

你把this改成as[i],可以打开控制的,输出错误的原因是:TypeError: as[i] is undefined,as[i]没有定义,意思就是匿名函数无法访问as数组。

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

举报

0/150
提交
取消

为什么将this改成as[i]就不能正常运行,this指代的不就是as[i]吗??

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