Node: replaceChild() Methode
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
Die replaceChild() Methode der Node Schnittstelle ersetzt ein Kindknoten innerhalb des angegebenen (Eltern-) Knotens.
Syntax
replaceChild(newChild, oldChild)
Parameter
newChild-
Der neue Knoten, der
oldChildersetzen soll.Warnung: Wenn der neue Knoten bereits an einer anderen Stelle im DOM vorhanden ist, wird er zuerst von dieser Position entfernt.
oldChild-
Das zu ersetzende Kind.
Hinweis:
Die Reihenfolge der Parameter, neu vor alt, ist ungewöhnlich.
Element.replaceWith(), das nur für Knoten gilt, die Elemente sind,
kann einfacher zu lesen und zu verwenden sein.
Rückgabewert
Der ersetzte Node. Dies ist derselbe Knoten wie oldChild.
Ausnahmen
HierarchyRequestErrorDOMException-
Wird ausgelöst, wenn die Beschränkungen des DOM-Baums verletzt werden, das heißt, wenn einer der folgenden Fälle eintritt:
- Wenn das Elternteil von
oldChildkeinDocument,DocumentFragmentoder einElementist. - Wenn das Ersetzen von
oldChilddurchnewChildzu einem Zyklus führen würde, das heißt, wennnewChildein Vorfahre des Knotens ist. - Wenn
newChildkeinDocumentFragment, einDocumentType, einElementoder einCharacterDataist. - Wenn der aktuelle Knoten ein
Textist und sein Elternteil einDocumentist. - Wenn der aktuelle Knoten ein
DocumentTypeist und sein Elternteil nicht einDocumentist, da ein doctype immer ein direkter Nachkomme eines document sein sollte. - Wenn das Elternteil des Knotens ein
Documentist undnewChildeinDocumentFragmentmit mehr als einemElementKind ist oder einTextKind hat. - Wenn das Ersetzen von
oldChilddurchnewChildzu einemDocumentmit mehr als einemElementals Kind führen würde. - Wenn das Ersetzen von
oldChilddurchnewChilddazu führen würde, dass einElementKnoten vor einemDocumentTypeKnoten vorhanden ist.
- Wenn das Elternteil von
NotFoundErrorDOMException-
Wird ausgelöst, wenn das Elternteil von
oldChildnicht der aktuelle Knoten ist.
Beispiel
// Given:
// <div>
// <span id="childSpan">foo bar</span>
// </div>
// Create an empty element node
// without an ID, any attributes, or any content
const sp1 = document.createElement("span");
// Give it an id attribute called 'newSpan'
sp1.id = "newSpan";
// Create some content for the new element.
const sp1Content = document.createTextNode("new replacement span element.");
// Apply that content to the new element
sp1.appendChild(sp1Content);
// Build a reference to the existing node to be replaced
const sp2 = document.getElementById("childSpan");
const parentDiv = sp2.parentNode;
// Replace existing node sp2 with the new span element sp1
parentDiv.replaceChild(sp1, sp2);
// Result:
// <div>
// <span id="newSpan">new replacement span element.</span>
// </div>
Spezifikationen
| Specification |
|---|
| DOM> # dom-node-replacechild> |