應(yīng)該怎么理解lis[i].index=i比價好,囧我理解是為了傳給 onclick中的divs中的i
?window.onload=function(){ ????????var?tabs=document.getElementById("tabs"); ????????var?divs=tabs.getElementsByTagName("div"); ????????//tabs.get。。。是為了獲取id為tabs下的所有標(biāo)簽div的節(jié)點 ????????var?lis=document.getElementsByTagName("li"); ????????for(var?i=0;i<lis.length;i++){ ????????????lis[i].index=i; ????????????lis[i].onclick=function(){ ????????????????for(var?n=0;n<lis.length;n++){//先給所有的選項的li都取消on,div都隱藏 ????????????????????lis[n].className?=?""; ????????????????????divs[n].className?=?"hide"; ????????????????}//再給點擊的那個選項li設(shè)置on,div顯示 ????????????????this.className?=?"on"; ????????????????divs[this.index].className?=?""; ????????????} ????????} ????}
如果直接用divs[i]的話是瀏覽器是無法識別的,所以先用lis[i].index=i,把i傳遞過去,再在divs[this.index]中。不知道我這樣理解對不對,有沒有更好的解釋
2016-09-01
通過for循環(huán)遍歷給lis的每個子元素添加點擊事件,當(dāng)某個li觸發(fā)事件我們希望通過下標(biāo)定位到對應(yīng)的div并對其操作,但是在這之前,i會被系統(tǒng)回收(垃圾回收機(jī)制)。我們可以吧每個li看做一個對象,自定義一個index屬性(可以隨便取名字a,b,隨便啦)通過for循環(huán),給lis的每個子元素(li)的index屬性賦予期下標(biāo)值,當(dāng)li觸發(fā)事件,this指向了當(dāng)前觸發(fā)事件的li,通過他的index屬性取到它的下標(biāo)值,這樣div[this.index]就是當(dāng)前l(fā)i對應(yīng)的div了(實現(xiàn)了點擊li與對應(yīng)的div能做出響應(yīng))
2016-08-30
用divs[i]來代替divs[this.index]無法實現(xiàn)效果,不是因為divs[i]無法識別,而是i不固定,i是從0~lis.length-1,如果直接用divs[i]來做的話那無論點哪個標(biāo)題都會顯示最后一個的內(nèi)容,因為會循環(huán)到最后,divs[lis.length-1].className=""; 而讓lis[i].index=i,這樣每個li都有自己的編號,在lis[i].onclick=function()中,this就是當(dāng)前點擊的li,根據(jù)當(dāng)前點擊的li的index,可以確定展現(xiàn)哪個div
2016-08-30
二樓正解,我原來是做iOS的,一開始看也不明白,只知道把這行注了就沒效果了,后來才知道只是為了給該屬性綁定值,lis[i]有index的屬性,但是這個屬性沒有值。需要讓lis[i].index=i;其實這里把index改成id也可以。只是為了給lis[i]一個值,lis[i]有值之后才可以確定點的是哪個li
還有不理解的盡情追問,如果明白了請采納我的答案哦? 謝謝~~
2016-08-30
就是為了保存i的值
2016-08-30
不知道....