--- title: Node.cloneNode() slug: Web/API/Node/cloneNode translation_of: Web/API/Node/cloneNode ---
{{ApiRef}}

概要

現在のノードの複製を返します。

構文

var dupNode = node.cloneNode(deep);
node
複製するノード
dupNode
新しく生成される node の複製
deep {{optional_inline}}
node の子孫ノードも複製する場合は truenode のみを複製する場合は false

注記: DOM4 の仕様では (Gecko 13.0 {{geckoRelease("13.0")}} で実装) 、 deep は省略可能な引数です。省略された場合、 deep には true が渡され、深い複製を生成します。浅い複製を生成するには、 deepfalse にする必要があります。

以前のDOMの仕様を実装しているブラウザでは、 deep は必須の引数です。

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

注記

ノードを複製すると、そのノードのすべての属性とその値がコピーされます。つまり、HTML属性のイベントを含みます。addEventListener() を使用したものや、要素のプロパティに代入されたもの (例: node.onclick = fn;) は複製されません。

cloneNode によって返される複製ノードは、 {{domxref("Node.appendChild()")}} や同種のメソッドによってドキュメントの一部である他のノードに追加されるまでは、ドキュメントの一部ではありません。また、他のノードに追加されるまでは、親ノードを持ちません。

deepfalse に設定されていると、どの子ノードも複製されません。 そのため、そのノードに含まれる {{domxref("Text")}} ノードも複製されません。

deeptrue に評価できる場合、サブツリー全体 (子 {{domxref("Text")}} ノードにあるテキストを含む) もコピーされます。 {{HTMLElement("img")}} や {{HTMLElement("input")}} 要素などの空ノードの場合には deep を true と false のどちらに設定してもかまいません。

注意: cloneNode() を使用すると、ドキュメント内で要素の id が重複する可能性があります。

別のドキュメントに追加するためにノードを複製する場合は、代わりに {{domxref("Document.importNode()")}} を使用してください。

ブラウザ実装状況

{{CompatibilityTable}}
機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
deep 引数の省略 Yes
(初期値は false)
{{CompatGeckoDesktop("13.0")}} {{CompatUnknown}} {{CompatUnknown}} Yes
(初期値は false)
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
deep 引数の省略 {{CompatUnknown}} {{CompatUnknown}} {{CompatGeckoMobile("13.0")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}

仕様書