Onze vrijwilligers hebben dit artikel nog niet naar het Nederlands vertaald. Doe mee en help de klus te klaren!
U kunt het artikel ook in het English (US) lezen.

The Node.cloneNode() method returns a duplicate of the node on which this method was called.

Syntax

var dupNode = node.cloneNode([deep]);
node
The node to be cloned.
dupNode
The new node that will be a clone of node
deep Optional
true if the children of the node should also be cloned, or false to clone only the specified node.

Note: In the DOM4 specification (as implemented in Gecko 13.0 (Firefox 13 / Thunderbird 13 / SeaMonkey 2.10)), deep is an optional argument. If omitted, the method acts as if the value of deep was true, defaulting to using deep cloning as the default behavior. To create a shallow clone, deep must be set to false.

This behavior has been changed in the latest spec, and if omitted, the method will act as if the value of deep was false. Though it's still optional, you should always provide the deep argument both for backward and forward compatibility. With Gecko 28.0 (Firefox 28 / Thunderbird 28 / SeaMonkey 2.25 / Firefox OS 1.3)), the console warned developers not to omit the argument. Starting with Gecko 29.0 (Firefox 29 / Thunderbird 29 / SeaMonkey 2.26)), a shallow clone is defaulted instead of a deep clone.

Example

var p = document.getElementById("para1");
var p_prime = p.cloneNode(true);

Notes

Cloning a node copies all of its attributes and their values, including intrinsic (in–line) listeners. It does not copy event listeners added using addEventListener() or those assigned to element properties (e.g., node.onclick = fn). Moreover, for a <canvas> element, the painted image is not copied.

The duplicate node returned by cloneNode() is not part of the document until it is added to another node that is part of the document using Node.appendChild() or a similar method. It also has no parent until it is appended to another node.

If deep is set to false, child nodes are not cloned. Any text that the node contains is not cloned either, as it is contained in one or more child Text nodes.

If deep evaluates to true, the whole subtree (including text that may be in child Text nodes) is copied too. For empty nodes (e.g., <img> and <input> elements) it doesn't matter whether deep is set to true or false.

Warning: cloneNode() may lead to duplicate element IDs in a document.

If the original node has an ID and the clone is to be placed in the same document, the ID of the clone should be modified to be unique. Name attributes may need to be modified also, depending on whether duplicate names are expected.

To clone a node for appending to a different document, use Document.importNode() instead.

Specifications

Specification Status Comment
DOM
The definition of 'Node.cloneNode()' in that specification.
Living Standard  
Document Object Model (DOM) Level 3 Core Specification
The definition of 'Node.cloneNode()' in that specification.
Obsolete  
Document Object Model (DOM) Level 2 Core Specification
The definition of 'Node.cloneNode()' in that specification.
Obsolete Initial definition

Browser compatibility

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
cloneNodeChrome Full support YesEdge Full support 12Firefox Full support YesIE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support YesOpera Android Full support YesSafari iOS Full support YesSamsung Internet Android ?
deep defaults to falseChrome Full support YesEdge Full support YesFirefox Full support 29
Full support 29
No support 13 — 29
Notes
Notes deep defaults to true.
No support No
Notes
Notes Before Firefox 13, deep was a required parameter.
IE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 29
Full support 29
No support 14 — 29
Notes
Notes deep defaults to true.
No support No
Notes
Notes Before Firefox 14, deep was a required parameter.
Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android ?

Legend

Full support  
Full support
Compatibility unknown  
Compatibility unknown
See implementation notes.
See implementation notes.