Para contar todos los elementos descendientes incluyendo elementos anidados en JavaScript llanura, hay varias opciones:
La más sencilla es probablemente la siguiente:
var count = parentElement.getElementsByTagName("*").length;
Si desea la libertad de publicidad d más lógica alrededor de lo que se cuenta, puede recursivo a través del árbol local como esto:
function countDescendantElements(parent) {
var node = parent.firstChild, cnt = 0;
while (node) {
if (node.nodeType === 1) {
cnt++;
cnt += countDescendantElements(node);
}
node = node.nextSibling;
}
return(cnt);
}
Demostración de Trabajo: http://jsfiddle.net/jfriend00/kD73F/
si sólo quería contar hijos directos (niveles no profundas) y sólo quería contar con nodos de elemento (no un texto o comentario nodos) y quería el apoyo del navegador de ancho, usted puede hacer esto:
function countChildElements(parent) {
var children = parent.childNodes, cnt = 0;
for (var i = 0, len = children.length; i < len; i++) {
if (children[i].nodeType === 1) {
++cnt;
}
}
return(cnt);
}
[esto] (http://stackoverflow.com/questions/10381296/best-way-to-get -child-nodes) podría ser útil –