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

来源:5-1 编程挑战

黑白灰菌

2016-12-15 12:15

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回答

  • 小白小白小白啦
    2016-12-15 19:13:26
    已采纳

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

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

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







  • 小白小白小白啦
    2016-12-15 19:08:10

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

DOM事件探秘

DOM事件?本课程会通过实例来给小伙伴们讲解如何使用这些事件

99545 学习 · 1197 问题

查看课程

相似问题