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

来源:5-1 编程挑战

DAIsyKARson

2016-08-04 10:02

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


写回答 关注

3回答

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

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

    DAIsyK...

    嗯,我也就是this这儿搞不懂,不过按你这么理解好像又明白一点,还是谢啦!

    2016-08-04 14:07:41

    共 1 条回复 >

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

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

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

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

DOM事件探秘

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

99545 学习 · 1197 问题

查看课程

相似问题