a746785570
2015-03-08 22:46
aLi[i].index = i;
aDiv[this.index].className = "";
这两句求破。。
http://www.imooc.com/qadetail/63838
在这里提到第一句使用index是让了个ali添加索引值,使其便于查找。
但ali本身不是一个数组嘛?自带了数组下标呀,为啥需要index。
回复 我只是我:因为页面一旦加载完成就触发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的闭包原理和事件机制
把i的值储存到index中,在oDivs[this.index].className = "";这句中this.index的值是当前鼠标所在的元素,oLis[i].index = i;的意义是可以让this.index获取任意一个index值
他是个数组吧~~
JavaScript进阶篇
468061 学习 · 21891 问题
相似问题