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

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';

        }

    }


提问者:CTRealize 2016-08-21 11:52

个回答

  • 我叫小糯米
    2016-08-23 08:28:19
    已采纳

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

  • weibo_宝慕林349606
    2016-09-19 17:56:22

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

  • Candy尼古拉斯
    2016-08-29 12:54:00

    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';这种方式是错误的。

  • 慕慕1265030
    2016-08-28 20:39:51

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