JavaScriptで特定の要素を複製(コピー)する方法

jQueryやReactなどのライブラリを使わずに、JavaScriptを使ってカルーセルを自作していた時に「特定の要素を複製(コピー)する」必要がありました。

方法を調べると「Node.cloneNode – Web API インターフェイス | MDN」の記事を参考にして、実装することができました。

カルーセルに限らず、今後も必要になってくる場面が出てきそうです・・・以下にコードや動作のサンプルを作ってまとめましたので、機会がありましたらご参考ください。

JavaScriptで特定の要素を複製(コピー)するコードサンプル

html

<button id="addbutton">add box</button>
<div id="boxes">
 <div class="active">box</div>
</div>

CSS

body{
 text-align:center;
}

button{
 margin-bottom:1rem;
}

#boxes div{
 width:100px;
 height:100px;
 background:#ddd;
 margin:0 auto 1rem;
}

JavaScript

//idが「addbutton」の要素を取得
let addbutton = document.getElementById("addbutton");

//ボタンをクリックしたときに実行(イベントリスナー使用:ie9は以上で動作)
addbutton.addEventListener("click", function(){

 //idが「boxes」の要素を取得
 let boxes = document.getElementById("boxes");

 //「boxes」の要素の先頭にある子要素を複製(コピー)
 let clone = boxes.firstElementChild.cloneNode(true);

 //「boxes」の要素の最後尾に複製した要素を追加
 boxes.appendChild(clone); 
});

JavaScriptで特定の要素を複製(コピー)する動作サンプル

上記のコードを使って、以下にサンプルを作りました。「add box」ボタンを押すたびにboxがどんどん複製されます。

指定されているclass属性もそのまま複製されます。複製なので、そりゃ当たり前か・・・

著者:bouya Imamura