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.
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.
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/
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]);
}
}
Tenga en cuenta que 'childNodes' contiene todos los nodos y solo los elementos. – Gumbo
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
Mejor uso 'children [i] .nodeType === Node.ELEMENT_NODE' para asegurarse de que realmente es un nodo de elementos. – Gumbo
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);
}
}
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. –
así es que document.getElementById (id) .childNodes; eso solo me daría los hijos inmediatos? – racky
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]' –