言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

JavaScript辞典

  1. トップページ
  2. JavaScript辞典
  3. HTML要素.cloneNode()

HTML要素.cloneNode() 対応: DOM Level 1(1998)

HTML要素を複製するメソッドです。引数に『true』を指定すると子要素も含めて複製し、『false』を指定するとHTML要素自身のみを複製します。

構文

// 子要素を含めて複製します。
var clone = element.cloneNode(true);

// HTML要素自身のみを複製します。
var clone = element.cloneNode(false);

引数

引数概要
trueHTML要素とそのすべての子要素・テキストを含めて複製します。これを「ディープコピー」と呼びます。
falseHTML要素自身のみを複製します。子要素やテキストは含まれません。これを「シャローコピー」と呼びます。

戻り値

複製された新しい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要素を残したまま同じ内容を別の場所にも配置できます。

対応ブラウザ

Chrome Chrome
49 以降
全バージョンで対応しています
Firefox Firefox
57 以降
全バージョンで対応しています
Safari Safari
18 以降
1 以前 ×
Edge Edge
80 以降
11 以前 ×
IE IE
11 以降
5 以前 ×
Opera Opera
48 以降
6 以前 ×
iOS Safari iOS Safari
18 以降
全バージョンで対応しています
Android Browser Android Browser
37 以降
4 以前 ×
Chrome Android Chrome Android
36 以降
17 以前 ×
Firefox Android Firefox Android
79 以降
3 以前 ×

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。