HTML要素.cloneNode() 対応: DOM Level 1(1998)
HTML要素を複製するメソッドです。引数に『true』を指定すると子要素も含めて複製し、『false』を指定するとHTML要素自身のみを複製します。
構文
// 子要素を含めて複製します。 var clone = element.cloneNode(true); // HTML要素自身のみを複製します。 var clone = element.cloneNode(false);
引数
| 引数 | 概要 |
|---|---|
| true | HTML要素とそのすべての子要素・テキストを含めて複製します。これを「ディープコピー」と呼びます。 |
| false | HTML要素自身のみを複製します。子要素やテキストは含まれません。これを「シャローコピー」と呼びます。 |
戻り値
複製された新しいHTML要素を返します。この時点ではDOMに追加されていないため、『親HTML要素.appendChild()』などで追加する必要があります。
サンプルコード
<ul id="list"> <li class="item">項目1</li> </ul>
var list = document.querySelector("#list");
var original = document.querySelector(".item");
// 子要素を含めて複製し、リストに追加します。
var deepClone = original.cloneNode(true);
deepClone.textContent = "項目2";
list.appendChild(deepClone);
// HTML要素自身のみを複製し、リストに追加します。
var shallowClone = original.cloneNode(false);
shallowClone.textContent = "項目3";
list.appendChild(shallowClone);
概要
『HTML要素.cloneNode()』はHTML要素を複製するメソッドです。引数に『true』を指定するとすべての子要素・テキストを含む「ディープコピー」を行い、『false』を指定するとHTML要素自身のみの「シャローコピー」を行います。
複製されたHTML要素には元のHTML要素の属性やクラスがそのまま引き継がれます。ただし『id』属性も複製されるため、ページ内で『id』が重複しないよう注意が必要です。必要に応じて複製後に『HTML要素.setAttribute()』で『id』を変更してください。
『親HTML要素.appendChild()』はすでにDOMに存在するHTML要素を追加すると元の位置から移動してしまいますが、『HTML要素.cloneNode()』で複製した新しいHTML要素を追加すれば、元のHTML要素を残したまま同じ内容を別の場所にも配置できます。
対応ブラウザ
1 以前 ×
5 以前 ×
6 以前 ×
Android Browser
37 以降 ○
4 以前 ×
Chrome Android
36 以降 ○
17 以前 ×
Firefox Android
79 以降 ○
3 以前 ×記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。