ChildNode.replaceWith()

Dies ist eine experimentelle Technologie
Da diese Technologie noch nicht definitiv implementiert wurde, sollte die Browserkompatibilität beachtet werden. Es ist auch möglich, dass die Syntax in einer späteren Spezifikation noch geändert wird.

The ChildNode.replaceWith() method replaces this ChildNode in the children list of its parent with a set of Node or DOMString objects. DOMString objects are inserted as equivalent Text nodes.

Syntax

[Throws, Unscopable] 
void ChildNode.replaceWith((Node or DOMString)... nodes);

Parameters

nodes
A set of Node or DOMString objects to replace.

Exceptions

Examples

Using replaceWith()

var parent = document.createElement("div");
var child = document.createElement("p");
parent.appendChild(child);
var span = document.createElement("span");

child.replaceWith(span);

console.log(parent.outerHTML);
// "<div><span></span></div>"

ChildNode.replaceWith() is unscopable

The replaceWith() method is not scoped into the with statement. See Symbol.unscopables for more information.

with(node) { 
  replaceWith("foo");
}
// ReferenceError: replaceWith is not defined 

Polyfill

You can polyfill the replaceWith() method in Internet Explorer 6 and higher with the following code:

function ReplaceWithPolyfill() {
  'use-strict'; // Für safari and IE > 10
  var parent = this.parentNode, i = arguments.length, currentNode;
  if (!parent) return;
  if (!i) // if there are no arguments
    parent.removeChild(this);
  while (i--) { // i-- decrements i and returns the value of i before the decrement
    currentNode = arguments[i];
    if (typeof currentNode !== 'object'){
      currentNode = this.ownerDocument.createTextNode(currentNode);
    } else if (currentNode.parentNode){
      currentNode.parentNode.removeChild(currentNode);
    }
    // the value of "i" below is after the decrement
    if (!i) // if currentNode is the first argument (currentNode === arguments[0])
      parent.replaceChild(currentNode, this);
    else // if currentNode isn't the first
      parent.insertBefore(currentNode, this.previousSibling);
  }
}
if (!Element.prototype.replaceWith)
    Element.prototype.replaceWith = ReplaceWithPolyfill;
if (!CharacterData.prototype.replaceWith)
    CharacterData.prototype.replaceWith = ReplaceWithPolyfill;
if (!DocumentType.prototype.replaceWith) 
    DocumentType.prototype.replaceWith = ReplaceWithPolyfill;

Specification

Specification Status Comment
DOM
Die Definition von 'ChildNode.replacewith()' in dieser Spezifikation.
Lebender Standard Initial definition.

Browser compatibility

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid WebviewChrome für AndroidFirefox für AndroidOpera für AndroidSafari auf iOSSamsung Internet
replaceWithChrome Vollständige Unterstützung 54Edge Vollständige Unterstützung 17Firefox Vollständige Unterstützung 49IE Keine Unterstützung NeinOpera Vollständige Unterstützung 39Safari Vollständige Unterstützung JaWebView Android Vollständige Unterstützung 54Chrome Android Vollständige Unterstützung 54Firefox Android Vollständige Unterstützung 49Opera Android Vollständige Unterstützung 41Safari iOS Vollständige Unterstützung JaSamsung Internet Android Vollständige Unterstützung 6.0

Legende

Vollständige Unterstützung  
Vollständige Unterstützung
Keine Unterstützung  
Keine Unterstützung

See also