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

aLi[i].index = i;。。。求破十万火急

 aLi[i].index = i;

aDiv[this.index].className = "";

这两句求破。。

http://www.imooc.com/qadetail/63838

在这里提到第一句使用index是让了个ali添加索引值,使其便于查找。

但ali本身不是一个数组嘛?自带了数组下标呀,为啥需要index。

正在回答

3 回答

回复 我只是我:因为页面一旦加载完成就触发onload事件,而onclick事件触发之前,for(var i= 0,len = oLis.length;i<len;i++)这个循环已经运行完成了!oLis[i].onclick = function()这段代码只是挂在那里(挂这个词不怎么准确,意思放在那里,等待onclick事件触发),这时候的i=3.在oLis[i].onclick = function()之前document.writeln(i)你会发现输出012,说明循环已经完成.
oLis[i].index = i 的作用只是在循环的过程中绑定下标i(0 1 2)到oLis数组相应元素oLis[0] oLis[1] oLis[2]的index变量上(例如oLis[0].index = 0;oLis[1] =1;oLis[2]=2),
当onclick事件触发的时候,this.className中的this就是当前鼠标所在的元素(例如家居), 同时oDivs[this.index]会获取到家居所对应的oLis数组中的index值(这里是1,因为我们已经在完成的循环中将oLis[1]=1了),而如果换成oLis[i]则因为i永远=3,所以oLis[i]===oLis[3],当然会出错了!建议好好看一下JS的闭包原理和事件机制

12 回复 有任何疑惑可以回复我~
#1

Lybon

oLis[1].index=1,oLis[2].index=2写错了
2015-03-20 回复 有任何疑惑可以回复我~
#2

狐狸君raphael

既然i = 3了,为什么还要aLi[i].index=i呢?这时候不是把aLi[i].index设成3了吗?
2016-06-14 回复 有任何疑惑可以回复我~

把i的值储存到index中,在oDivs[this.index].className = "";这句中this.index的值是当前鼠标所在的元素,oLis[i].index = i;的意义是可以让this.index获取任意一个index值

3 回复 有任何疑惑可以回复我~
#1

我只是我

不懂,为什么直接写下标不成功?为什么不能够直接这样子写: oLis[i].className="on"; oDivs[i].className = "";
2015-03-17 回复 有任何疑惑可以回复我~
#2

Lybon 回复 我只是我

看一下楼下我的解释吧,应该能懂的!
2015-03-20 回复 有任何疑惑可以回复我~
#3

Windcx 回复 我只是我

CPT的回答我是懂了,他意思是说,js在onload加载的时候,for循环已经在运行完成了,等待的是鼠标点击事件的出发,那么此时,i的值已经达到3了,如果没有索引值,会出现只有i=3的错误,利用自定义的index,将每个点击对应的下标存放在index,在点击事件触发的时候,准确定位到该index所在div,从而显示出来,不过className这个是什么不清楚。
2015-04-23 回复 有任何疑惑可以回复我~
#4

阿木木囧 回复 Windcx

index是自定义的?可以这样定义的吗?
2015-05-09 回复 有任何疑惑可以回复我~
#5

endenvor

index是个变量,在这里传递数值,
2015-12-29 回复 有任何疑惑可以回复我~
#6

朱鹏天羽 回复 Lybon

我想知道那个index是不是相当于数组ali1的一个属性,只是用来储存当前循环的i。还是它具有其他的实际意义?
2016-01-02 回复 有任何疑惑可以回复我~
查看3条回复

他是个数组吧~~

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

aLi[i].index = i;。。。求破十万火急

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信