cloneNode method

The cloneNode method allows you to clone an element and get its exact copy. This copy can then be inserted into a page using the prepend, append, appendChild, insertBefore or insertAdjacentElement methods.

The method receives either true or false as a parameter. If true is passed, then the element is cloned completely, together with all attributes and child elements, and if false - only the element itself (without child elements).

Syntax

javascriptelement.cloneNode(true or false);

Example

We make a copy of the block with the class elem and paste it at the end of the #parent block:

html<div id="parent">
  <div class="elem">
    <p>text1</p>
    <p>text2</p>
  </div>
</div>
javascriptlet parent = document.getElementById('parent');
let elem = parent.querySelector('.elem');

let clone = elem.cloneNode(true);
parent.appendChild(clone);

The code execution result:

html<div id="parent">
  <div class="elem">
    <p>text1</p>
    <p>text2</p>
  </div>
  <div class="elem">
    <p>text1</p>
    <p>text2</p>
  </div>
</div>

Example

You can work with the resulting clone as with a regular element:

html<div id="parent">
  <div class="elem">
    <p>text1</p>
    <p>text2</p>
  </div>
</div>
javascriptlet parent = document.getElementById('parent');
let elem = parent.querySelector('.elem');

let clone = elem.cloneNode(true);
clone.children[0].textContent = 'new text1';
clone.children[1].textContent = 'new text2';

parent.appendChild(clone);

The code execution result:

html<div id="parent">
  <div class="elem">
    <p>text1</p>
    <p>text2</p>
  </div>
  <div class="elem">
    <p>new text1</p>
    <p>new text2</p>
  </div>
</div>

See also

  • the createElement method
    that can be used to create a new element