Node

Node (nœud) est une classe abstraite de laquelle de nombreux objets de type DOM API héritent, leur permettant d'être traités de manière similaire et souvent interchangeable. Étant une classe abstraire, il n'existe pas d'objet qui soit directement un Node. Tous les objets implantant les fonctionnalités de Node sont des instances d'une de ses sous-classes, dont les plus notables sont Document, Element et DocumentFragment.

De pls, tous les types de nœuds du DOM sont représentés par une classe héritant des propriétés et méthodes de Node : CharacterData (duquel Text, Comment et CDATASection héritent), ProcessingInstruction, , DocumentType, Notation, Entity et EntityReference.

Les propriétés ou méthodes de ces interfaces peuvent retourner null lorsque leur existence n'est pas pertinente. Elles peuvent aussi générer une exception – par exemple lors de l'ajout d'un enfant à un type de nœud pour lequel aucun enfant ne peut exister.

Propriétés

Hérite les propriétés de son parent EventTarget.[1]

Node.baseURI Lecture seule
Retourne une DOMString (chaine de caractères) représentant l'URL de base du document contenant le Node. En HTML, il correspond au protocole, au nom de domaine et à la structure du répertoire, jusqu'au dernier /.
Node.baseURIObject Cette API n'a pas été standardisée.
(Non disponible pour le contenu Web). L'objet en lecture seule nsIURI représentant l'URI de base pour l'élément.
Node.childNodes Lecture seule
Renvoie un NodeList contenant tous les enfants de ce nœud. NodeList signifie que si les enfants du Node changent, l'objet NodeList est automatiquement mis à jour.
Node.firstChild Lecture seule
Renvoie un Node représentant le premier nœud enfant direct de ce nœud ou null s'il n'a pas d'enfant.
Node.lastChild Lecture seule
Retourne un Node représentant le dernier nœud enfant direct de ce nœud ou null s'il n'a pas d'enfant.
Node.nextSibling Lecture seule
Retourne un Node représentant le nœud suivant dans l'arbre ou null s'il n'y en a pas.
Node.nodeName Lecture seule
Retourne une DOMString (chaîne de caractères) contenant le nom du nœud. La structure du nom diffère du type de nœud. Par exemple, un HTMLElement contiendra le nom de la balise correspondante, comme 'audio'  pour un HTMLAudioElement (en-US), un nœud Text doit avoir la chaîne '#text' ou un  Document  doit avoir la chaîne '#document'..
Node.nodeTypeLecture seule
Retourne un unsigned short (non signé court) représentant le type du nœud. Les valeurs possibles sont :
Nom Valeur
ELEMENT_NODE 1
ATTRIBUTE_NODE Cette API obsolète ne doit plus être utilisée, mais elle peut continuer à fonctionner. 2
TEXT_NODE 3
CDATA_SECTION_NODE Cette API obsolète ne doit plus être utilisée, mais elle peut continuer à fonctionner. 4
ENTITY_REFERENCE_NODE Cette API obsolète ne doit plus être utilisée, mais elle peut continuer à fonctionner. 5
ENTITY_NODE Cette API obsolète ne doit plus être utilisée, mais elle peut continuer à fonctionner. 6
PROCESSING_INSTRUCTION_NODE 7
COMMENT_NODE 8
DOCUMENT_NODE 9
DOCUMENT_TYPE_NODE 10
DOCUMENT_FRAGMENT_NODE 11
NOTATION_NODE Cette API obsolète ne doit plus être utilisée, mais elle peut continuer à fonctionner. 12
Node.nodeValue
Retourne / définit la valeur du nœud courant.
Node.ownerDocumentLecture seule
Retourne le Document  auquel ce noeud appartient. Si aucun document ne lui est associé, il retourne null .
Node.parentNodeLecture seule
Retourne un Node qui est le parent de ce nœud. S'il n'existe pas, parce qu'il est en haut de l'arbre ou parce qu'il ne participe pas à un arbre, cette propriété retourne null .
Node.parentElementLecture seule
Retourne un Element qui est le parent de ce nœud. Si le nœud n'a aucun parent ou si ce parent n'est pas un  Element , cette propriété retourne null.
Node.previousSiblingLecture seule
Retourne un Node représentant le nœud précédent dans l'arbre ou  null s'il n'y en a pas.
Node.textContent
Retourne / définit le contenu textuel d'un élément et de tous ses descendants.

Propriétés obsolètes

Node.localName This is an obsolete API and is no longer guaranteed to work. Lecture seule
Retourne un DOMString  représentant la partie locale du nom d'un élément.

Note : Dans Firefox 3.5 et versions antérieures, la propriété saisit le nom local pour les éléments HTML (mais pas les éléments XHTML). Dans les versions ultérieures, cela ne se produit pas, donc la propriété est en minuscule pour HTML et XHTML.

Node.namespaceURI This is an obsolete API and is no longer guaranteed to work. Lecture seule
L'URI du "Namespace" de ce nom, ou  null s'il n'y en a pas.

Note : Dans Firefox 3.5 et versions antérieures, les éléments HTML ne contiennent aucun "namespace". Dans les versions ultérieures, les éléments HTML sont dans le "namespace" https://www.w3.org/1999/xhtml/  pour HTML et XML. 

Node.prefix This is an obsolete API and is no longer guaranteed to work. Lecture seule
Est une DOMString représentant le préfixe de l'espace de nom du nœud ou null  si aucun préfixe n'est spécifié.
Node.nodePrincipal  Cette API n'a pas été standardisée. Obsolète depuis Gecko 46
Un nsIPrincipal représentant le nœud principal.
Node.rootNode  This is an obsolete API and is no longer guaranteed to work. Lecture seule
Retourne un objet Node représentant le noeud le plus haut dans l'arbre ou le noeud en cours s'il est le noeud le plus haut de l'arbre. Cette propriété a été remplacée par Node.getRootNode().

Méthodes

Hérite des méthodes de son parent EventTarget.[1]

Node.appendChild(childNode)
Ajoute l'argument childNode spécifié comme dernier enfant au noeud actuel.
Si l'argument fait référence à un noeud existant sur l'arborescence DOM, le nœud sera détaché de sa position actuelle et attaché à la nouvelle position.
Node.cloneNode()
Clône un Node et, éventuellement, tout son contenu. Par défaut, il duplique le contenu de ce nœud.
Node.compareDocumentPosition()
Compare la position du nœud courant par rapport à un autre nœud dans tout autre document.
Node.contains()
Retourne une valeur Boolean (booléen) indiquant si un noeud est un descendant d'un noeud donné ou non.
Node.getBoxQuads() This is an experimental API that should not be used in production code.
Retourne une liste des boites CSS des nœuds relatifs à un autre nœud.
Node.getRootNode()
Retourne la racine de l'objet contextuel qui comprend éventuellement la "Shadow root" si elle est disponible.
Node.hasChildNodes()
Retourne un Boolean (booléen) indiquant si l'élément a des noeuds enfants ou non.
Node.insertBefore()
Insère un Node avant le nœud de référence en tant qu'enfant du noeud actuel.
Node.isDefaultNamespace()
Accepte une URI d'espace de nom comme argument et retourne une valeur Boolean avec true (vrai) si l'espace de nom est celui par défaut du noeud donné ou false (faux) sinon.
Node.isEqualNode()
Retourne une valeur Boolean (booléenne) qui indique si oui ou non deux noeuds sont du même type et si tous leurs points de données définis correspondent.
Node.isSameNode()
Retourne une valeur Boolean (booléenne) indiquant si les deux noeuds sont ou non identiques (c'est-à-dire qu'ils font référence au même objet).
Node.lookupPrefix()
Retourne une DOMString (chaîne de caractères) contenant le préfixe d'une URI d'un espace de nom donné, s'il est présent, et null sinon.
Node.lookupNamespaceURI()
Accepte un préfixe et retourne l'URI de l'espace de noms qui lui est associé sur le nœud donné s'il le trouve, null sinon. Fournir null comme préfixe retournera l'espace de noms par défaut.
Node.normalize()
Nettoye tous les nœuds de texte en-dessous de cet élément (fusionne adjacent, supprime vide).
Node.removeChild()
Supprime un nœud enfant, depuis l'élément courant, qui doit être un enfant de ce nœud.
Node.replaceChild()
Remplace un Node enfant du nœud courant par celui donné dans le paramètre.

Méthodes obsolètes

Node.getFeature() This is an obsolete API and is no longer guaranteed to work.
Permet à un utilisateur d'obtenir un objet DOMUserData à partir du nœud fourni.
Node.getUserData() This is an obsolete API and is no longer guaranteed to work.
Permet à un utilisateur d'obtenir une DOMUserData (donnée utilisateur) à partir du nœud.
Node.hasAttributes() This is an obsolete API and is no longer guaranteed to work.
Retourne un Boolean indiquant si l'élément possède des attributs ou non.
Node.isSupported() This is an obsolete API and is no longer guaranteed to work.
Retourne une marque Boolean qui contient le résultat d'un test si l'implémentation DOM prend en compte une caractéristique spécifique et si cette fonctionnalité est prise en charge par le nœud spécifique.
Node.setUserData() This is an obsolete API and is no longer guaranteed to work.
Permet à un utilisateur d'attacher ou d'enlever  DOMUserData du nœud.

Exemples

Parcourir tous les nœuds enfants

La fonction suivante parcourt de manière récursive tous les nœuds enfants d'un noeud et exécute une fonction de rappel sur eux (et sur le nœud parent lui-même).

function DOMComb (oParent, oCallback) {
  if (oParent.hasChildNodes()) {
    for (var oNode = oParent.firstChild; oNode; oNode = oNode.nextSibling) {
      DOMComb(oNode, oCallback);
    }
  }
  oCallback.call(oParent);
}

Syntaxe

DOMComb(parentNode, callbackFunction);

Description

Suit le cycle récursif de tous les nœuds enfants d'un parentNode et le parentNode lui-même, et exécute la fonction callbackFunction (rappel) sur eux comme un objet this.

Paramètres

parentNode
Le nœud parent (Node Object)
callbackFunction
La fonction de rappel (Function).

Exemples d'utilisation

L'exemple suivant envoie à la console.log le contenu texte du corps :

function printContent () {
  if (this.nodeValue) { console.log(this.nodeValue); }
}

onload = function () {
  DOMComb(document.body, printContent);
};

Supprimer tous les enfants imbriqués dans un nœud

Element.prototype.removeAll = function () {
  while (this.firstChild) { this.removeChild(this.firstChild); }
  return this;
};

Exemple d'utilisation

/* ... an alternative to document.body.innerHTML = "" ... */
document.body.removeAll();

Spécifications

Spécification Statut Commentaire
DOM
La définition de 'Node' dans cette spécification.
Standard évolutif Supprime les propriétés suivantes : attributes, namespaceURI, prefix, et localName.
Supprime les méthodes suivantes : isSupported(), hasAttributes(), getFeature(), setUserData(), et getUserData().
Document Object Model (DOM) Level 3 Core Specification
La définition de 'Node' dans cette spécification.
Obsolete Les méthodes insertBefore(), replaceChild(), removeChild(), etappendChild() renvoient un autre type d'erreur (NOT_SUPPORTED_ERR) si elles sont appelées par Document.
La méthode normalize()  a été modifiée, ainsi ce mode Text peut aussi être normalisé si la marque DOMConfiguration est définie.
Ajout des méthodes suivantes : compareDocumentPosition(), isSameNode(), lookupPrefix(), isDefaultNamespace(), lookupNamespaceURI(), isEqualNode(), getFeature(), setUserData(), et getUserData().
Ajout des propriétés suivantes : baseURI et textContent.
Document Object Model (DOM) Level 2 Core Specification
La définition de 'Node' dans cette spécification.
Obsolete La propriété ownerDocumenta été légèrement modifiée pour que  DocumentFragment renvoie également null.
Ajout des propriétés suivantes : namespaceURI, prefix, et localName.
Ajout des méthodes suivantes : normalize(), isSupported() et hasAttributes().
Document Object Model (DOM) Level 1 Specification
La définition de 'Node' dans cette spécification.
Obsolete Définition initiale

Compatibilité des navigateurs

BCD tables only load in the browser