應該怎么理解lis[i].index=i比價好,囧我理解是為了傳給 onclick中的divs中的i
?window.onload=function(){ ????????var?tabs=document.getElementById("tabs"); ????????var?divs=tabs.getElementsByTagName("div"); ????????//tabs.get。。。是為了獲取id為tabs下的所有標簽div的節點 ????????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設置on,div顯示 ????????????????this.className?=?"on"; ????????????????divs[this.index].className?=?""; ????????????} ????????} ????}
如果直接用divs[i]的話是瀏覽器是無法識別的,所以先用lis[i].index=i,把i傳遞過去,再在divs[this.index]中。不知道我這樣理解對不對,有沒有更好的解釋
2016-09-01
通過for循環遍歷給lis的每個子元素添加點擊事件,當某個li觸發事件我們希望通過下標定位到對應的div并對其操作,但是在這之前,i會被系統回收(垃圾回收機制)。我們可以吧每個li看做一個對象,自定義一個index屬性(可以隨便取名字a,b,隨便啦)通過for循環,給lis的每個子元素(li)的index屬性賦予期下標值,當li觸發事件,this指向了當前觸發事件的li,通過他的index屬性取到它的下標值,這樣div[this.index]就是當前li對應的div了(實現了點擊li與對應的div能做出響應)
2016-08-30
用divs[i]來代替divs[this.index]無法實現效果,不是因為divs[i]無法識別,而是i不固定,i是從0~lis.length-1,如果直接用divs[i]來做的話那無論點哪個標題都會顯示最后一個的內容,因為會循環到最后,divs[lis.length-1].className=""; 而讓lis[i].index=i,這樣每個li都有自己的編號,在lis[i].onclick=function()中,this就是當前點擊的li,根據當前點擊的li的index,可以確定展現哪個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
不知道....