還是在做慕課網(wǎng)Javascript進階篇最后的編程挑戰(zhàn)時遇到的問題抠璃,大神輕噴~
原題地址:http://www.imooc.com/code/1912
基本結構是這樣的,給title設置float:left;屬性使其在并排顯示宇弛。
步入正題鸡典,在HTML結構中能夠看到,對于title和content我只設置第一個為show狀態(tài)枪芒。
title的show相對于hide的區(qū)別是有不同的border-bottom
content的show相對于hide的區(qū)別是display:block和display:none
對于JS的想法是這樣彻况,獲取title下的li標簽,content下的div標簽舅踪,然后用循環(huán)遍歷所有的li標簽纽甘,給每一個li添加onclick事件。
事件內用foer循環(huán)遍歷所有content下的div使其className都為contentHide抽碌,在循環(huán)結束之后將被點擊的tit對應索引找到第幾個content下的div設置其className屬性為contentShow悍赢。 于是我這樣寫了。
然后货徙,運行無效果左权,只能出來第三個ocntent內容。
也就是這樣寫的話痴颊,每個點擊事件最后都是i=2時的結果赏迟。
所以我們要想辦法把當前點擊的索引取出來并保存,在后面使用蠢棱。
1.var一個index用來儲存每次點擊之后獲取到的下標
2.在點擊之后 this.index = i;
3.寫一個show方法锌杀,將this.index作為參數(shù)傳到此方法中
4.在show方法中首先 index = 傳入的參數(shù)甩栈;
5.用for隱藏所有內容,contentList[index].className設置為show
OK完成 最后寫出來是這樣糕再。
最重要的是用 this.index將當次的索引傳出量没,這樣就可以避免設置時都是循環(huán)結束時i的值。