为了账号安全,请及时绑定邮箱和手机立即绑定

关于for循环中i的用法

关于for循环中i的用法

    for(var i=0,l=as.length;i<l;i++){        as[i].onmouseover=function(){          reset();          this.style.background='#ccf';          index=this.getAttribute('selectid')-1;          //index=i;为什么这样不行??????????        }}为什么不能直接用i给index赋值,而是要通过别的与i无关的方式赋值(前提index=this.getAttribute('selectid')-1和index=i在逻辑上是值是一样的)
查看完整描述

3 回答

?
ruibin

TA贡献358条经验 获得超213个赞

这是一个典型的闭包问题,由于事件是异步的。所以在执行onmouseover时此时所有的i都变成了as.length了,如果不明白,可以看看闭包。当然,这里你也可以直接在onmouseover里面打印i的值,一看就明白了。

查看完整回答
5 反对 回复 2016-04-06
?
qq_灿_6

TA贡献2条经验 获得超1个赞

第一种改法:index=function(num){return num;}(i);

第二种改法:index=function(num){return function(){ return num}}(i);

查看完整回答
反对 回复 2016-04-06
  • 3 回答
  • 1 关注
  • 1795 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信