2011-12-01 30 views
5

的JavaScript獲得子元素我寫了下面的一行在Javascript:通過類名

var eleCategory = document.getElementById("cmbCategory"); 

現在我想找到包含在eleCategory元素中的所有elementbyClassName

這是可能的這樣的事情嗎?

var eleChild = eleCategory.getElementByClassName("autoDropdown"); 

如何獲取父元素的子元素?

+0

[問題相關的document.getElementByClassName()在JavaScript]的可能重複(http://stackoverflow.com/questions/8309071/issue-related-to-document-getelementbyclassname-in-javascript) – JJJ

+0

無它是不同的。第一次是層次結構className-> ClassName這次我有hiearchy id-> className –

+1

我沒有看到爲什麼你不能在上一個問題中使用任何答案。 – JJJ

回答

4

getElementsByClassName尚未在所有瀏覽器中實現。例如,Niels' solution在IE中不起作用。但是,其他人已經創建了自己的實現;約翰Resig的有his blog

4

是的,它是可能的,看到這個小提琴:http://jsfiddle.net/ajAY2/

getElementsByClassName將返回元素的集合,因爲它會查找對象中的所有類。所以,如果你只有這個對象中有1類這樣的,你必須得到第0對象,如:

var eleChild = eleCategory.getElementsByClassName("autoDropdown")[0]; 

總腳本:

腳本:

var eleCategory = document.getElementById("cmbCategory"); 
var eleChild = eleCategory.getElementsByClassName("autoDropdown"); 
alert(eleChild.length); 

HTML

<div id="cmbCategory"> 

    <div class="autoDropdown"></div> 
    <div class="autoDropdown"></div> 
</div> 

<div class="autoDropdown"></div> 
4
var eleChild = eleCategory.childNodes; 
for(i = 0 , j = eleChild.length; i < j ; i++){ 
    if(eleChild[ i ].className == "autodropdown"){ 
     YOUr_SCRIPT 
    } 
} 
2

可以在DOM樹訪問一切寫了,這一點:

document.childNodes[0].childNodes[0].childNodes[0] ... n[n] ... 

只要尋找的childNodes的的childNodes。 如果我沒記錯的話,您可以:

var element = document.getElementById("myid"); 
var child = element.childNode[0] 
0

現代的方式:

var element = document.querySelector('#Element'); 
var elementChildren = element.querySelectorAll('.Element-child'); 

elementChildren將包含所有孩子的一個陣列內element一類Element-child

使用括號表示法,我們可以訪問我們數組中的第n個孩子,例如

var firstElementChild = elementChildren[0]; // zero-based