2010-02-12 31 views
12

¿Cómo contar el número total de elementos div que están contenidos en otro div usando javascript?cómo contar el número total de divs dentro de otro div usando javascript

+0

a eliminar a una gran cantidad de desarrolladores de JavaScript (especie de yo también) cuando no se incluye la etiqueta jQuery! – alex

+1

@alex: ¿Y qué? Esto no tiene nada que ver con jQuery, y el OP puede no estar en una situación en la que pueda usar jQuery, o de hecho no quiera usar jQuery. Francamente, para una pregunta que no sea jQuery, preferiría no tener la ayuda de personas que solo miran las preguntas etiquetadas con jQuery y no con JavaScript. –

+0

Oh, lo sé. Solo digo ... – alex

Respuesta

19

El getElementsByTagName() no es solo un método document, sino uno que se puede ejecutar en cualquier elemento DOM.

elemento. getElementsByTagName es similar a documento. getElementsByTagName, excepto que su búsqueda se restringe a aquellos elementos que son descendientes del elemento especificado

ver más en https://developer.mozilla.org/en/DOM/element.getElementsByTagName


Así que el código real que hace lo que pide es

var container_div = document.getElementById('id_of_container_div'); 
var count = top_level_div.getElementsByTagName('div').length; 
+1

getElementsByTagName no está disponible en navegadores que no sean los que usan el motor Gecko. Pruébalo en IE6. – amphetamachine

+3

funciona bien en IE6 –

+0

Estaba bastante seguro de que 'getElementsByTagName' estaba en IE6? – alex

0

Hay muchas maneras de t elemento divs usando jquery.

Pero forma más popular y sencilla son:

$(document).ready(function(){ 
    var divCount = $("div").size(); 
    alert(divCount); 
}); 

Y

$(document).ready(function(){ 
    var divCount = $("div").length; 
    alert(divCount); 
}); 

Su útil para usted

1

Puede utilizar @ Gist mano de davidcmoulton: https://gist.github.com/davidcmoulton/a76949a5f35375cfbc24

I encontrar bastante útil que no lo hace solo cuenta los DIV pero también enumera el recuento de todos los tipos de elementos de tu página.

Aquí está una copia de la Síntesis para mayor referencia:

(function (window, undefined) { 
// Counts all DOM elements by name & logs resulting object to console. 
var forEach = Array.prototype.forEach, 
counter = {}, 

incrementElementCount = function (elementName) { 
    if (counter.hasOwnProperty(elementName)) { 
    counter[elementName] += 1; 
    } else { 
    counter[elementName] = 1; 
    } 
}, 

processNode = function (node) { 
    var currentNode = node; 
    if (currentNode.nodeType === currentNode.ELEMENT_NODE) { 
    incrementElementCount(currentNode.nodeName); 
    if (currentNode.hasChildNodes) { 
     forEach.call(currentNode.childNodes, function (childNode) { 
     if (childNode.nodeType === currentNode.ELEMENT_NODE) { 
      processNode(childNode); 
     } 
     }); 
    } 
    } 
}; 

processNode(window.document.firstElementChild); 

console.log(counter); 

}(this)); 
Cuestiones relacionadas