--- title: Node.cloneNode() slug: Web/API/Node/cloneNode translation_of: Web/API/Node/cloneNode ---
現在のノードの複製を返します。
var dupNode = node.cloneNode(deep);
node
dupNode
node
の複製deep
{{optional_inline}}node
の子孫ノードも複製する場合は true
、 node
のみを複製する場合は false
注記: DOM4 の仕様では (Gecko 13.0 {{geckoRelease("13.0")}} で実装) 、 deep
は省略可能な引数です。省略された場合、 deep
には true
が渡され、深い複製を生成します。浅い複製を生成するには、 deep
を false
にする必要があります。
以前のDOMの仕様を実装しているブラウザでは、 deep
は必須の引数です。
var p = document.getElementById("para1"); var p_prime = p.cloneNode(true);
ノードを複製すると、そのノードのすべての属性とその値がコピーされます。つまり、HTML属性のイベントを含みます。addEventListener()
を使用したものや、要素のプロパティに代入されたもの (例: node.onclick = fn;
) は複製されません。
cloneNode
によって返される複製ノードは、 {{domxref("Node.appendChild()")}} や同種のメソッドによってドキュメントの一部である他のノードに追加されるまでは、ドキュメントの一部ではありません。また、他のノードに追加されるまでは、親ノードを持ちません。
deep
が false
に設定されていると、どの子ノードも複製されません。 そのため、そのノードに含まれる {{domxref("Text")}} ノードも複製されません。
deep
が true
に評価できる場合、サブツリー全体 (子 {{domxref("Text")}} ノードにあるテキストを含む) もコピーされます。 {{HTMLElement("img")}} や {{HTMLElement("input")}} 要素などの空ノードの場合には deep
を true と false のどちらに設定してもかまいません。
cloneNode()
を使用すると、ドキュメント内で要素の id が重複する可能性があります。別のドキュメントに追加するためにノードを複製する場合は、代わりに {{domxref("Document.importNode()")}} を使用してください。
機能 | 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}} |