JavaScript’s Node.cloneNode() method returns a duplicate of the Node. Its optional parameter controls whether the subtree contained in the Node is also cloned or not.

Syntax

Node.cloneNode();
Node.cloneNode(parameter);

Parameters

An optional Boolean value specifying whether the subtree contained in the node is cloned or not.

The parameter defaults to false.

Examples

Here are some examples of using the JavaScript cloneNode() method.

Suppose we have the following HTML elements:

<p id="paragraph"><span>Announcement:</span> Today, the JavaScript Guide has a special offer.</p>

We would like to clone the p element. What should we do?

Let’s consider our options. One obvious way is to select the element with the getElementById() method and use the cloneNode() method:

let paragraph = document.getElementById('paragraph');
let clone = paragraph.cloneNode();

Now we have the element duplicated and stored in the clone variable. However, if we log the duplicate to the console, all we can see is an empty p element:

console.log(clone);
// <p id="paragraph"></p>

That is because we did not clone the subtree contained in the node. Had we cloned the subtree, the results would have been different:

let paragraph = document.getElementById('paragraph');
let clone = paragraph.cloneNode(true);
console.log(clone);
// <p id="paragraph"><span>Announcement:</span> Today, the JavaScript Guide has a special offer.</p>

Additional notes

As you can see, using the cloneNode() method led to duplicate id attributes in our document: We have the original p element whose id is “paragraph” and we have the cloned element with the same id. Since id attributes should be unique, one of them should be changed. We can change the id of the cloned element like this:

clone.id = "newParagraph";

Browser compatibility

Chrome
Edge
Firefox
Internet Explorer
Opera
Safari
Chrome (Android)
Firefox (Android)
Opera (Android)
Safari (iOS)
Samsung Internet
WebView (Android)
cloneNode() 1 12 1 6 7 1.1 18 4 10.1 1 1.0 4.4