概要
現在のノードの複製を返します。
構文
var dupNode = node.cloneNode(deep);
-
node - 複製するノード
-
dupNode -
新しく生成される
nodeの複製 -
deepOptional -
nodeの子孫ノードも複製する場合はtrue、nodeのみを複製する場合はfalse注記: DOM4 の仕様では (Gecko 13.0 (Firefox 13.0 / Thunderbird 13.0 / SeaMonkey 2.10) で実装) 、
deepは省略可能な引数です。省略された場合、deepにはtrueが渡され、深い複製を生成します。浅い複製を生成するには、deepをfalseにする必要があります。以前のDOMの仕様を実装しているブラウザでは、
deepは必須の引数です。
例
var p = document.getElementById("para1");
var p_prime = p.cloneNode(true);
注記
ノードを複製すると、そのノードのすべての属性とその値がコピーされます。つまり、HTML属性のイベントを含みます。addEventListener() を使用したものや、要素のプロパティに代入されたもの (例: node.onclick = fn;) は複製されません。
cloneNode によって返される複製ノードは、 Node.appendChild() や同種のメソッドによってドキュメントの一部である他のノードに追加されるまでは、ドキュメントの一部ではありません。また、他のノードに追加されるまでは、親ノードを持ちません。
deep が false に設定されていると、どの子ノードも複製されません。 そのため、そのノードに含まれる Text ノードも複製されません。
deep が true に評価できる場合、サブツリー全体 (子 Text ノードにあるテキストを含む) もコピーされます。 <img> や <input> 要素などの空ノードの場合には deep を true と false のどちらに設定してもかまいません。
cloneNode() を使用すると、ドキュメント内で要素の id が重複する可能性があります。別のドキュメントに追加するためにノードを複製する場合は、代わりに Document.importNode() を使用してください。
ブラウザ実装状況
| 機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| 基本サポート | (有) | (有) | (有) | (有) | (有) |
deep 引数の省略 |
Yes (初期値は false) |
13.0 (13.0) | ? | ? | Yes (初期値は false) |
| 機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| 基本サポート | (有) | (有) | (有) | (有) | (有) | (有) |
deep 引数の省略 |
? | ? | 13.0 (13.0) | ? | ? | ? |