2010-07-01 12 views
13

Una pregunta rápida ... ¿cuál es la declaración JAVASCRIPT para obtener los hijos inmediatos de una LISTA? Intenté:hijos inmediatos de una lista

document.getElementById(id).getElementsByTagName('li'); 

que me da todos los nodos secundarios.

Respuesta

14

bucle a través de:

document.getElementById(id).children

y obtener los que son elementos li (creo que todos ellos deben ser de acuerdo a las especificaciones)


Creo que document.querySelectorAll('#id>li') si es compatible debería funcionar también. Ver: http://www.w3.org/TR/selectors-api/

+1

Hmm, parece que los niños no son parte de un estándar DOM, solo parte de gecko y tal vez de otros motores de renderizado ... childNodes es probablemente la mejor respuesta incluso si tiene que verificar cada elemento de la lista. –

+0

así es que document.getElementById (id) .childNodes; eso solo me daría los hijos inmediatos? – racky

+0

sí, tenga en cuenta que si tiene Firebug instalado, puede ver estas dos listas en la ventana de visualización en este sitio con un reloj como 'document.getElementsByTagName (" ul ") [0]' –

3

Node.childNodes o Element.children

var listItems = []; 

var children = elem.childNodes; 
for(var i = 0; i < children.length; i++) { 
    if(children[i].nodeName == "LI") { 
     listItems.push(children[i]); 
    } 
} 
+1

Tenga en cuenta que 'childNodes' contiene todos los nodos y solo los elementos. – Gumbo

+0

gracias @Gumbo - Aclararé ese punto en la respuesta más adelante. No debería importar para las listas pequeñas, ya que estamos probando por 'nodeName', pero puede ser ineficaz para listas más grandes. – Anurag

+2

Mejor uso 'children [i] .nodeType === Node.ELEMENT_NODE' para asegurarse de que realmente es un nodo de elementos. – Gumbo

2

El mismo código más rápido & mejor.

var listItems = []; 
var children = element.childNodes; 
for(var i = 0, l=children.length; i<l; ++i) { 
    var child = children[i]; 
    if(child.nodeType === 1 && child.tagName === "LI") { 
     listItems.push(child); 
    } 
} 
Cuestiones relacionadas