2011-04-16 34 views
9

Puedo obtener el recuento de todos los descendientes de un elemento, pero parece que no puedo apuntar solo a los hijos inmediatos. Esto es lo que tengo en este momento.Usar javascript para contar elementos secundarios inmediatos de un elemento

var sectionCount = document.getElementById("window").getElementsByTagName("section").length; 

He jugado con otras cosas y una sintaxis diferente, pero parece que no puedo obtenerlo.

El equivalente jQuery sería:

var sectionCount = $("#window > section").length; 

pero tengo que hacer esto Javascript solamente.

Respuesta

15

Utilice la interfaz del selector DOM (querySelectorAll).

var selectionCount = document.querySelectorAll("#window > section").length; 

Si desea una solución compatible hacia atrás, a través del bucle childNodes y contar nodos del elemento.

var w = document.getElementById('window'); 
var count = 0; // this will contain the total elements. 
for (var i = 0; i < w.childNodes.length; i++) { 
    var node = w.childNodes[i]; 
    if (node.nodeType == Node.ELEMENT_NODE && node.nodeName == "SECTION") { 
     count++; 
    } 
} 
+4

Sin embargo, esto no es compatible en un contexto prehistórico. IE IEn. –

+1

@Caspar - jaja prehistórica, no fue hace tanto tiempo. Se agregó una solución para IE. – Anurag

+0

¡Gracias, eso funcionó! –

Cuestiones relacionadas