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'; };
自己调用自己的时候只能写this。就好像说话的时候我用“我”称呼自己,而不是用自己的名字。大概是这么个意思吧,我理解的。。。
之前看过一些解释,大概意思就是,当你的onmouseover或者onmouseout事件运行时,你的for循环已经结束,得到i的值是5.
是执行顺序的关系,先循环为每个元素绑定事件,循环结束后才开始执行事件中的代码。这时,i的值已经越界,用as[i]取不到正确的值。