Quelle est la différence entre les enfants et les childNodes en JavaScript?
J'ai trouvé moi-même à l'aide de JavaScript et j'ai couru à travers childNodes
et children
propriétés. Je me demande quelle est la différence entre eux est. Est également un préféré à l'autre?
Vous devez vous connecter pour publier un commentaire.
Comprendre que
.enfants
est une propriété d'une Élément. 1 Seuls les Éléments ont.children
, et ces enfants sont tous de type Élément. 2Cependant,
.childNodes
est une propriété de Nœud..childNodes
peut contenir n'importe quel nœud. 3Un exemple concret serait:
La plupart du temps, vous souhaitez utiliser
.children
parce que généralement, vous ne voulez pas faire une boucle sur Texte ou Commentaire des noeuds dans votre manipulation du DOM.Si vous ne souhaitez manipuler les nœuds de Texte, vous voulez probablement
.textContent
à la place. 41. Techniquement, c'est un attribut de ParentNode, un mixin inclus par Élément.
2. Ils sont tous les éléments parce que
.children
est un HTMLCollection, qui ne peut contenir que des éléments.3. De même,
.childNodes
peut contenir n'importe quel nœud parce que c'est un NodeList.4. Ou
.innerText
. Voir les différences ici ou ici..children
sur des documents XML: jsfiddle.net/fbwbjvch/1Élément
.enfants
retourne seul élément d'enfants, alors queNœud.childNodes
renvoie tous les enfants du nœud. Notez que les éléments sont des nœuds, de sorte que les deux sont disponibles sur les éléments.Je crois
childNodes
est plus fiable. Par exemple, MDC (lien ci-dessus) note que IE seul achildren
droit dans IE 9.childNodes
fournit de moins en moins de place à l'erreur par navigateur réalisateurs..children
ne filtre pas les nœuds de commentaires, mais il exclut les nœuds de texte..getElementsByTagName('*')
. C'est à dire peut être gênant parfois...children
qui prennent en charge IE.De bonnes réponses pour l'instant, je veux seulement ajouter que, vous pouvez vérifier le type d'un nœud à l'aide de
nodeType
:yourElement.nodeType
Ce sera vous donnez un nombre entier: (prises de ici)
Note que, selon Mozilla: