Mi sono trovato a usare JavaScript e ho trovato le proprietà childNodes
e children
. Mi chiedo quale sia la differenza tra loro. Anche uno è preferito all'altro?Qual è la differenza tra child e childNodes in JavaScript?
risposta
.children
è una proprietà di Element. Solo gli elementi hanno figli, e questi bambini sono tutti di tipo Elemento.
Tuttavia .childNodes
è una proprietà di Node. .childNodes
può contenere qualsiasi nodo.
Quindi un esempio concreto sarebbe
var el = document.createElement("div");
el.textContent = "foo"
el.childNodes.length === 1; // TextNode is a node child
el.children.length === 0; // no Element children
Naturalmente .children
è DOM4 così il supporto del browser è traballante, se si utilizza il DOM-shim, i vostri problemi cross browser andrà via!
La maggior parte delle volte si desidera utilizzare .children
perché in genere non si desidera eseguire il loop su TextNode o Commenti nella manipolazione DOM.
Se si desidera modificare i TextNode, è preferibile che sia lo .textContent
.
Element.children
restituisce solo elementi figli, mentre Node.childNodes
restituisce tutti i nodi figli. Nota che gli elementi sono nodi, quindi entrambi sono disponibili sugli elementi.
Credo che childNodes
sia più affidabile. Ad esempio, MDC (collegato sopra) nota che IE ha ottenuto solo children
proprio in IE 9. childNodes
offre meno spazio per errori da parte degli implementatori del browser.
Darn, se solo questo ha funzionato su IE 6-8, sarebbe un sogno diventato realtà. – Ryan
@minitech funziona (per un certo valore di lavoro). Apparentemente '.children' non filtra i nodi dei commenti, ma filtra i nodi di testo. – Raynos
@Raynos: esattamente - lo stesso con '.getElementsByTagName ('*')'. IE può essere così fastidioso a volte ... – Ryan
- 1. Qual è la differenza tra "javascript :;" e "javascript:" nell'attributo href?
- 2. Qual è la differenza tra 'e "in? JavaScript
- 3. Qual è la differenza tra undefined e window.undefined in JavaScript?
- 4. Qual è la differenza tra 987 e (987) in JavaScript?
- 5. Qual è la differenza tra slice() e substr() in JavaScript?
- 6. Qual è la differenza tra $ get e $ find in JavaScript?
- 7. Qual è la differenza tra "$ variabile" e "variabile" - JavaScript - jQuery
- 8. Qual è la differenza tra .// e // * in XPath?
- 9. Qual è la differenza tra mixins statiche e tratto dinamica
- 10. Qual è la differenza tra = e: =
- 11. Qual è la differenza tra `##` e `hashCode`?
- 12. Qual è la differenza tra dict() e {}?
- 13. qual è la differenza tra:.! e: r !?
- 14. Qual è la differenza tra Verilog! e ~?
- 15. Qual è la differenza tra ("") e (null)
- 16. Qual è la differenza tra? : e ||
- 17. qual è la differenza tra [[], []] e [[]] * 2
- 18. Qual è la differenza tra $ e $$?
- 19. Qual è la differenza tra " " e ""?
- 20. Qual è la differenza tra {0} e ""?
- 21. Qual è la differenza tra {0} e +?
- 22. Qual è la differenza tra .ToString() e + ""
- 23. Qual è la differenza tra sé e la finestra?
- 24. Qual è la differenza tra il callback e la promessa
- 25. Qual è la differenza tra la funzione() {}() e function() {}()
- 26. Qual è la differenza tra questi due modelli JavaScript
- 27. angolare 2.0 - Qual è la differenza tra @ViewQuery e @query
- 28. chiusure Javascript - Qual è la differenza tra queste
- 29. Qual è la differenza tra "in fp" e "in fp.readlines()"?
- 30. Qual è la differenza tra il punto e virgola in JavaScript e in Python?
Sì, IE sembra avere alcuni problemi: http://www.quirksmode.org/dom/w3c_core.html#t71 –
I bambini possono essere di qualsiasi tipo, non solo elementi HTML – david
@david cosa? "corrispondenti solo ai bambini degli elementi". i bambini possono essere solo elementi – Raynos