2012-01-11 11 views
22

Ho uno HTMLDivElement e il mio obiettivo è trovare uno nidificato div al di sotto di questo.Come cercare i figli di un HTMLDivElement?

Idealmente mi piacerebbe qualcosa come getElementById, ma quella funzione non funziona per HTMLDivElement.

Devo attraversare manualmente il grafico o esiste un modo più semplice?

risposta

35

Demo: http://jsfiddle.net/ThinkingStiff/y9K9Y/

Se il <div> siete alla ricerca di ha una classe, è possibile utilizzare getElementsByClassName():

document.getElementById('parentDiv').getElementsByClassName('childDiv')[0]; 

Se non ha una classe è possibile utilizzare getElementsByTagName() :

document.getElementById('parentDiv').getElementsByTagName('div')[0]; 

E se ha un id si può, naturalmente, basta usare getElementById() per trovarlo, non importa dove si trova nel DOM:

document.getElementById('childDiv'); 
+0

Non estendere 'Element.prototype' di spazzatura. C'è un ottimo metodo 'getElementsByClassName' che fa ciò che vuoi ma meglio. – Raynos

+0

@Raynos Ho pensato che fosse solo a livello di documento. Modificato. – ThinkingStiff

+0

document.getElementById ('parentDiv') .querySelector ('div') – fallinov

4
//For immediate children 

    var children = document.getElementById('id').childNodes; 

    //or for all descendants 

    var children = document.getElementById('id').getElementsByTagName('*'); 
3
var div = ... 
var divChildren = div.getElementsByTagName("div"); 
var divYouWant = [].filter.call(divChildren, function (el) { 
    return matchesSomeCondition(el); 
}); 

Idealmente, vorrei qualcosa di simile getElementById

E è possibile utilizzare getElementById solo per fare document.getElementById(id) e poiché gli ID sono univoci che troveranno quel singolo elemento div desiderato.

È inoltre possibile utilizzare elem.getElementsByClassName per selezionare un discendente di elem per classe

Problemi correlati