问答详情
源自:5-1 编程挑战

this和as[i]

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

                {

                    as[i].onmouseover=function(){

                        this.style.background="#ccc";

                    }

                    as[i].onmouseout=function(){

                        this.style.background="none";

                    }

                    as[i].onclick=function(){

                        title.innerHTML=this.innerHTML;

                    }

                }

我之前的this都是用的as[i],为什么不行呢

提问者:坏骇芓 2016-06-29 16:42

个回答

  • AGhosts
    2016-06-29 22:52:46
    已采纳

    as[i].onmouseover=function(){

                           as[i].style.background="#ccc";  // 此时,as[i]为最后一次循环结果

                        }

    而 this 则是指向当前对象


  • latency
    2016-08-05 17:13:56

    是执行顺序的关系,先循环为每个元素绑定事件,循环结束后才开始执行事件中的代码。这时,i的值已经越界,用as[i]取不到正确的值。

  • AGhosts
    2016-07-15 14:41:25

    当前对象指你现在循环到的对象