2013-04-17 27 views
1

我可以在jquery中做到這一點,但由於某種原因,我的老闆更喜歡將服務器請求降低到32kb比使用jquery的魔術。那麼,如何使用純javascript將點擊效果應用於所有li標籤?我試過getElementById但這隻適用於ID。 JavaScript也不是很好。我的li是如此基本,它沒有類名。將效果應用到特定的lis使用普通的javascript

編輯: 想要隱藏所有li點擊。從其中一個答案,但錯誤嘗試這種說法

TypeError: document.getElementById(...).getElementsByTagName(...).style is undefined

document.getElementById('holder').getElementsByTagName('li').style.display="none‌​"; 

千恩萬謝。

+0

什麼類型效果是你想要適用於你的'li'嗎?另外,你可以發佈你已經嘗試過的代碼嗎? –

+0

你想對這些_li_元素應用什麼樣的效果?您是否從應用程序運行的同一個Web服務器請求了jQuery服務器,並且哪些請求將被削減爲32Kb?如果是,請考慮使用像http://code.jquery.com/ – akluth

+0

這樣的內容分發網絡,只是在單擊按鈕時隱藏所有的內容。 –

回答

4

使用document.getElementsByTagName('li');這將返回所有li-s。或者讓李期從特定的元素:

document.getElementById('myelementid').getElementsByTagName('li'); 

編輯躲在裏面元素中的所有元素li與ID- 「持有人」:

var lis = document.getElementById('holder').getElementsByTagName('li'); 
for(var i = 0; i < lis.length; i++){ 
    lis[i].style.display="none‌​"; 
} 
+1

...然後遍歷生成的NodeList。 – Sirko

+0

document.getElementById('holder')。getElementsByTagName('li')。style.display =「none」; - 這會返回一個錯誤,我做錯了什麼? –

+1

@SaintDee就像我說的:'getElementsByTagName()'返回一個NodeList。例如,您必須使用'for'循環手動迭代。 – Sirko

0

試試這個:

var allLis = document.getElementsByTagName('li'), thisLi, i, l; 
for(i=0, l=allLis.length; i<l; i++){ 
    thisLi = allLis[i]; 
    // do something to 'thisLi' here 
} 
相關問題