2011-12-01 6 views
5

Я написал следующую строку в Javascript:JavaScript получить дочерние элементы по Classname

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

Теперь я хочу, чтобы найти все elementbyClassName, содержащийся в eleCategory элементе.

Возможно ли это чем-то вроде этого?

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

Как получить дочерний элемент родительского элемента?

+0

возможно дубликат [вопрос, связанный с document.getElementByClassName() в JavaScript] (http://stackoverflow.com/questions/8309071/issue-related-to-document-getelementbyclassname-in-javascript) – JJJ

+0

нет он другой. сначала был иерархический классName-> ClassName на этот раз у меня есть hiearchy id-> className –

+1

Я не вижу причин, по которым вы не могли использовать ни один из ответов в предыдущем вопросе. – JJJ

ответ

4

getElementsByClassName не был реализован во всех браузерах. Niels' solution, например, не работает в IE. Однако другие создали свою собственную реализацию; Резиг имеет рецензию на 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-child в element.

Используя нотацию с использованием скобок, мы можем получить доступ к n-му дочернему элементу в нашем массиве, например.

var firstElementChild = elementChildren[0]; // zero-based 
Смежные вопросы