Me he encontrado utilizando JavaScript y me encontré con childNodes
y children
propiedades. Me pregunto cuál es la diferencia entre ellos. También es uno preferido para el otro?¿Cuál es la diferencia entre children y childNodes en JavaScript?
Respuesta
.children
es propiedad de Element. Solo los elementos tienen hijos, y estos hijos son todos de tipo Elemento.
Sin embargo, .childNodes
es una propiedad de Node. .childNodes
puede contener cualquier nodo.
Así, un ejemplo concreto sería
var el = document.createElement("div");
el.textContent = "foo"
el.childNodes.length === 1; // TextNode is a node child
el.children.length === 0; // no Element children
Por supuesto .children
es DOM4 lo que el soporte del navegador es inestable, sin embargo, si se utiliza el DOM-shim, sus problemas con el navegador cruz desaparecerán!
La mayor parte del tiempo desea utilizar .children
porque generalmente no desea pasar por encima de los TextNodes o los Comentarios en su manipulación de DOM.
Si desea manipular TextNodes, probablemente desee .textContent
.
Element.children
devuelve solo elemento children, mientras que Node.childNodes
devuelve todos los elementos secundarios. Tenga en cuenta que los elementos son nodos, por lo que ambos están disponibles en los elementos.
Creo que childNodes
es más confiable. Por ejemplo, MDC (vinculado anteriormente) señala que IE solo obtuvo children
directamente en IE 9. childNodes
proporciona menos espacio para errores por parte de los implementadores del navegador.
Darn, if solo esto funcionó en IE 6-8, sería un sueño hecho realidad. – Ryan
@minitech funciona (por algún valor de trabajo). Aparentemente '.children' no filtra los nodos de comentarios, pero filtra los nodos de texto. – Raynos
@Raynos: Exactamente igual con '.getElementsByTagName ('*')'. IE puede ser tan molesto a veces ... – Ryan
- 1. ¿cuál es la diferencia entre text/javascript y aplicación/javascript
- 2. ¿Cuál es la diferencia entre 987 y (987) en JavaScript?
- 3. En JavaScript, ¿cuál es la diferencia entre indexOf() y search()?
- 4. ¿Cuál es la diferencia entre undefined y window.undefined en JavaScript?
- 5. ¿Cuál es la diferencia entre isPrototypeOf y instanceof en Javascript?
- 6. ¿Cuál es la diferencia entre $ get y $ find en JavaScript?
- 7. ¿Cuál es la diferencia entre 'y "en JavaScript?
- 8. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 9. ¿Cuál es la diferencia entre JavaScript y script ECMA?
- 10. ¿Cuál es la diferencia entre JavaScript y DOM?
- 11. JavaScript: ¿Cuál es la diferencia entre 'documento' y 'HTML'
- 12. ¿Cuál es la diferencia entre JavaScript y JScript?
- 13. ¿Cuál es la diferencia entre JavaScript y Java?
- 14. ¿Cuál es la diferencia entre AJAX con JavaScript y jQuery?
- 15. ¿Cuál es la diferencia entre + = y = +?
- 16. ¿cuál es la diferencia entre:.! y: r !?
- 17. ¿Cuál es la diferencia entre ".equals" y "=="?
- 18. Cuál es la diferencia entre $ y jQuery
- 19. Cuál es la diferencia entre = y: =
- 20. Cuál es la diferencia entre $ (...) y `...`
- 21. ¿Cuál es la diferencia entre dict() y {}?
- 22. ¿Cuál es la diferencia entre {0} y ""?
- 23. ¿Cuál es la diferencia entre .ToString (+) y ""
- 24. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 25. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 26. ¿Cuál es la diferencia entre " " y ""?
- 27. ¿Cuál es la diferencia entre uno mismo y la ventana?
- 28. ¿Cuál es la diferencia entre @ y $ y% en MSBuild?
- 29. Cuál es la diferencia entre la función() {}() y la función() {}()
- 30. Cuál es la diferencia entre estos dos patrones de JavaScript
Sí, IE parece tener algunos problemas: http://www.quirksmode.org/dom/w3c_core.html#t71 –
Los niños pueden ser de cualquier tipo, no solo los elementos HTML – david
@david, ¿qué? "haciendo coincidir solo elemento niños". los niños solo pueden ser elementos – Raynos