w3schools variable tutorial modificar getelement javascript dom

variable - ¿Cuál es la diferencia entre child y childNodes en JavaScript?



modificar dom javascript (3)

Buenas respuestas hasta ahora, solo quiero agregar que usted podría verificar el tipo de nodo usando nodeType :

yourElement.nodeType

Esto te dará un número entero: (tomado de here )

| Value | Constant | Description | | |-------|----------------------------------|---------------------------------------------------------------|--| | 1 | Node.ELEMENT_NODE | An Element node such as <p> or <div>. | | | 2 | Node.ATTRIBUTE_NODE | An Attribute of an Element. The element attributes | | | | | are no longer implementing the Node interface in | | | | | DOM4 specification. | | | 3 | Node.TEXT_NODE | The actual Text of Element or Attr. | | | 4 | Node.CDATA_SECTION_NODE | A CDATASection. | | | 5 | Node.ENTITY_REFERENCE_NODE | An XML Entity Reference node. Removed in DOM4 specification. | | | 6 | Node.ENTITY_NODE | An XML <!ENTITY ...> node. Removed in DOM4 specification. | | | 7 | Node.PROCESSING_INSTRUCTION_NODE | A ProcessingInstruction of an XML document | | | | | such as <?xml-stylesheet ... ?> declaration. | | | 8 | Node.COMMENT_NODE | A Comment node. | | | 9 | Node.DOCUMENT_NODE | A Document node. | | | 10 | Node.DOCUMENT_TYPE_NODE | A DocumentType node e.g. <!DOCTYPE html> for HTML5 documents. | | | 11 | Node.DOCUMENT_FRAGMENT_NODE | A DocumentFragment node. | | | 12 | Node.NOTATION_NODE | An XML <!NOTATION ...> node. Removed in DOM4 specification. | |

Tenga en cuenta que según here :

Las siguientes constantes han quedado en desuso y ya no deben utilizarse: Node.ATTRIBUTE_NODE, Node.ENTITY_REFERENCE_NODE, Node.ENTITY_NODE, Node.NOTATION_NODE

Me encontré usando JavaScript y encontré propiedades de childNodes y childNodes . Me pregunto cuál es la diferencia entre ellos. ¿También es una preferida a la otra?


.children es una propiedad de un Element . Solo los Elementos tienen hijos, y estos niños son todos de tipo Elemento.

Sin embargo .childNodes es una propiedad de Node . .childNodes puede contener cualquier nodo.

Así que 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, por lo que la compatibilidad con el navegador es inestable. Sin embargo, si usa el DOM-shim , ¡los problemas de su navegador cruzado desaparecerán!

La mayoría de las veces desea usar .children porque, en general, no quiere pasar por encima de TextNodes o Comentarios en su manipulación DOM.

Si desea manipular TextNodes, probablemente desee .textContent en .textContent lugar.


Element.children solo devuelve elementos Node.childNodes , mientras que Node.childNodes devuelve todos los elementos Node.childNodes nodo. 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 arriba) señala que IE solo tuvo children en IE 9. childNodes proporciona menos margen de error para los implementadores del navegador.