Node: replaceChild() method
        
        
          
                Baseline
                
                  Widely available
                
                
              
        
        
        
          
                
              
                
              
                
              
        
        
      
      This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
The replaceChild() method of the Node interface replaces a child node within the given (parent) node.
Syntax
replaceChild(newChild, oldChild)
Parameters
- newChild
- 
The new node to replace oldChild.Warning: If the new node is already present somewhere else in the DOM, it is first removed from that position. 
- oldChild
- 
The child to be replaced. 
Note:
The parameter order, new before old, is unusual.
Element.replaceWith(), applying only to nodes that are elements,
may be easier to read and use.
Return value
The replaced Node. This is the same node as oldChild.
Exceptions
- HierarchyRequestError- DOMException
- 
Thrown when the constraints of the DOM tree are violated, that is if one of the following cases occurs: - If the parent of oldChildis not aDocument,DocumentFragment, or anElement.
- If the replacement of oldChildbynewChildwould lead to a cycle, that is ifnewChildis an ancestor of the node.
- If newChildis not aDocumentFragment, aDocumentType, anElement, or aCharacterData.
- If the current node is a Text, and its parent is aDocument.
- If the current node is a DocumentTypeand its parent is not aDocument, as a doctype should always be a direct descendant of a document.
- If the parent of the node is a DocumentandnewChildis aDocumentFragmentwith more than oneElementchild, or that has aTextchild.
- If the replacement of oldChildbynewChildwould lead toDocumentwith more than oneElementas child.
- If the replacement of oldChildbynewChildwould lead to the presence of anElementnode before aDocumentTypenode.
 
- If the parent of 
- NotFoundError- DOMException
- 
Thrown if the parent of oldChildis not the current node.
Example
// 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 sp1_content = document.createTextNode("new replacement span element.");
// Apply that content to the new element
sp1.appendChild(sp1_content);
// 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>
Specifications
| Specification | 
|---|
| DOM> # dom-node-replacechild> | 
Browser compatibility
Loading…