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

鼠标划过列表改变背景颜色的方法里有点疑问,为什么要用this,不可以用as[i],this不就是as[i]吗

 for (var i = 0, len = as.length; i < len; i++) {
                    as[i].onmouseover = function (i) {
                        this.style.background = '#666';
                    };
                    as[i].onmouseout = function (i) {
                        this.style.background = '#fff';
                    };


提问者:DAIsyKARson 2016-08-04 10:02

个回答

  • 孙Xuan
    2016-08-04 13:05:35
    已采纳

    自己调用自己的时候只能写this。就好像说话的时候我用“我”称呼自己,而不是用自己的名字。大概是这么个意思吧,我理解的。。。

  • 慕粉3274123
    2016-08-05 17:16:14

    之前看过一些解释,大概意思就是,当你的onmouseover或者onmouseout事件运行时,你的for循环已经结束,得到i的值是5.

  • latency
    2016-08-05 17:14:34

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