Node : méthode replaceChild()
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
La méthode replaceChild() de l'interface Node remplace un nœud enfant par un autre nœud au sein du nœud parent défini.
Syntaxe
replaceChild(newChild, oldChild)
Paramètres
newChild-
Le nouveau nœud qui remplace
oldChild.Attention : Si le nouveau nœud est déjà présent ailleurs dans le DOM, il est d'abord retiré de cette position.
oldChild-
Le nœud enfant à remplacer.
Note :
L'ordre des paramètres, nouveau avant ancien, est inhabituel.
Element.replaceWith(), qui s'applique uniquement aux nœuds qui sont des éléments, peut être plus facile à lire et à utiliser.
Valeur de retour
L'objet Node remplacé. Il s'agit du même nœud que oldChild.
Exceptions
HierarchyRequestErrorDOMException-
Levée lorsque les contraintes de l'arbre DOM sont violées, c'est-à-dire si l'un des cas suivants se produit :
- Si le parent de
oldChildn'est pas un objetDocument, un objetDocumentFragmentou un objetElement. - Si le remplacement de
oldChildparnewChildentraîne un cycle, c'est-à-dire sinewChildest un ancêtre du nœud. - Si
newChildn'est pas un objetDocumentFragment, un objetDocumentType, un objetElement, ou un objetCharacterData. - Si le nœud actuel est un
Text, et que son parent est unDocument. - Si le nœud actuel est un
DocumentTypeet que son parent n'est pas unDocument, car un doctype doit toujours être un descendant direct d'un document. - Si le parent du nœud est un
Documentet quenewChildest unDocumentFragmentavec plus d'un enfantElement, ou qui a un enfantText. - Si le remplacement de
oldChildparnewChildentraîne unDocumentavec plus d'unElementcomme enfant. - Si le remplacement de
oldChildparnewChildentraîne la présence d'un nœudElementavant un nœudDocumentType.
- Si le parent de
NotFoundErrorDOMException-
Levée si le parent de
oldChildn'est pas le nœud actuel.
Exemples
// Étant donné que :
// <div>
// <span id="spanEnfant">toto truc</span>
// </div>
// Crée un nœud d'élément vide
// sans ID, sans attributs et sans contenu
const sp1 = document.createElement("span");
// Donne un attribut id appelé "nouveauSpan"
sp1.id = "nouveauSpan";
// Crée du contenu pour le nouvel élément
const contenuSp1 = document.createTextNode(
"nouvel élément span de remplacement.",
);
// Applique ce contenu au nouvel élément
sp1.appendChild(contenuSp1);
// Crée une référence au nœud existant à remplacer
const sp2 = document.getElementById("spanEnfant");
const divParent = sp2.parentNode;
// Remplace le nœud existant sp2 par le nouvel élément span sp1
divParent.replaceChild(sp1, sp2);
// Résultat :
// <div>
// <span id="nouveauSpan">nouvel élément span de remplacement.</span>
// </div>
Spécifications
| Spécification |
|---|
| DOM> # dom-node-replacechild> |
Compatibilité des navigateurs
Voir aussi
- La propriété
Node.removeChild - La propriété
Element.replaceWith