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

来源:10-1 编程挑战

a746785570

2015-03-08 22:46

 aLi[i].index = i;

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

这两句求破。。

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

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

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

写回答 关注

3回答

  • Lybon
    2015-03-20 12:09:38

    回复 我只是我:因为页面一旦加载完成就触发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的闭包原理和事件机制

    狐狸君rap...

    既然i = 3了,为什么还要aLi[i].index=i呢?这时候不是把aLi[i].index设成3了吗?

    2016-06-14 02:09:07

    共 2 条回复 >

  • 睡觉的眼镜
    2015-03-11 13:44:36

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

    朱鹏天羽 回复Lybon

    我想知道那个index是不是相当于数组ali1的一个属性,只是用来储存当前循环的i。还是它具有其他的实际意义?

    2016-01-02 15:08:20

    共 6 条回复 >

  • Pengweb
    2015-03-09 01:23:43

    他是个数组吧~~

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468191 学习 · 21891 问题

查看课程

相似问题