.cloneNode()
このメソッドを呼んだノードの複製を返します。
文法
var dupNode = node.cloneNode([deep]);
引数 | 説明 |
---|---|
deep | trueにするとノードの子も複製され、falseだと指定されたノードだけの複製になります。 |
戻り値 | |
dupNode |
node を複製した新しいノードです。
|
注意:DOM4仕様(Gecko 13.0実装 (Firefox 13.0 / Thunderbird 13.0 / SeaMonkey 2.10))では、deep
は任意指定の引数です。
省略されると、true
値として処理され、デフォルトの振る舞いは子要素を含めた"深い"複製を行うようになっています。
"浅い"複製を作成するには、deep
にfalseを指定しなければいけません。
この振る舞いは最近の使用で変更され、省略されるとメソッドはdeep引数の値はfalseであるとして実行します。
ただし、依然として任意項目であるため、前方と後方の両方の互換性を保つために、
常にdeep引数を提供する必要があります。
Gecko 28.0(Firefox 28 / Thunderbird 28 / SeaMonkey 2.25)では、 コンソール上で開発者に対し引数を省略しないように警告します。 Gecko 29.0(Firefox 29 / Thunderbird 29 / SeaMonkey 2.26)からは、 深い複製に代わり、浅い複製がデフォルトになりました。
例
var p = document.getElementById("para1"),
var p_prime = p.cloneNode(true);
注意事項
複製されたノードは、本来備わっているリスナーを含め、複製元の属性や値の全てをコピーします。
addEventListener()
、または要素プロパティに割り当てられた(例:node.onclick = fn)イベントリスナーは
コピーしません。
cloneNode()
によって返される複製されたノードは、appendChild()
や類似するメソッドによって
documentの一部である他のノードに追加されるまでは、documentの一部ではありません。
もし、deep
にfalseが設定されると、子ノードは複製されません。
ノードに含まれるテキストは、1つでも複数でも子テキストノードはいずれも複製されません。
deep
をtrueにすると、全サブツリー(テキストなどの、その子テキストノードも含む)もコピーされます。
空ノード(例: <img>、<input>)は、deep
がtrueでもfalseでも関係ありません。
警告: cloneNode()
は、document内の要素idを複製する可能性があります。
もし、元のノードがidを持ち複製が同じdocument内に配置されるのであれば、 複製されたidは一意の値に修正すべきです。 複製された名前を期待されているかどうかで、名前属性も変更した方が良いかもしれません。
複製したノードを異なるdocumentに追加したい場合は、 .importNode()を代わりに使用します。
ブラウザ互換性
機能 | Chrome | Firefox (Gecko) |
IE | Opera | Safari |
---|---|---|---|---|---|
基本 | ◯ | ◯ | ◯ | ◯ | ◯ |
任意引数 deep |
◯ (デフォルトはfalse) |
13.0 (13.0) | ? | ? | ◯ (デフォルトはfalse) |
機能 | Android | Chrome for Android |
Firefox Mobile |
IE Mobile |
Opera Mobile |
Safari Mobile |
---|---|---|---|---|---|---|
基本 | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ |
任意引数 deep |
? | ? | 13.0 (13.0) | ? | ? | ? |
仕様
© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。
- 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
- 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
- MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。