【JavaScript】 DOM:要素の複製 cloneNode
2007.05.07 Author: たわばがに
ということで、今回はJavaScriptのDOMスクリプティングネタです。
以前、さらりと appendChild や removeChild に関しては取り上げた気がするので、
今回は要素の複製に使う cloneNode について書いてみました。
まずは毎度おなじみということで、以下のようなサンプルを作ってみました。
これを実際にセットしてみました。
↓のボタンをクリックすると、画像(正確には、divとimg)が複製され、表示されます。
クリックする度に画像が一つづつ増えていきます。
以下、スクリプトの説明。
cloneNode で id が template01 の要素(今回の場合はdiv)を複製し、
更にその id と style(display属性) を変更してから appendChild で表示(タグの追加)させています。
なお、cloneNode で指定している引数(今回はtrue)によって、
複製する要素の子要素を引き継ぐか否かを判別します。
子要素がいらない場合はfalseをセットします。
で、結局この cloneNode は何のために使うのか?
という疑問が浮かぶと思います。
おそらく、 cleateElement を使って実際に要素(タグ)生成を行ってみると分かりますが、
一から要素を構築していくのは結構面倒です。
特に複雑かつ同じ構成の要素を並べたい場合は、スクリプトが無駄に長くなるだけです。
そんな時などに cloneNode が重宝するはずです。
以上、偏ったDOMネタでした。(久々にサクッと終わった)
名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ
以前、さらりと appendChild や removeChild に関しては取り上げた気がするので、
今回は要素の複製に使う cloneNode について書いてみました。
まずは毎度おなじみということで、以下のようなサンプルを作ってみました。
<script type="text/javascript"> <!-- var count = 0; function hoge() { // クローン生成 tpl = document.getElementById('template01'); clone = tpl.cloneNode(true); // idとdisplayの設定 clone.id = "dispData_" + count; clone.style.display = "inline"; // 表示 base = document.getElementById('display_area') base.appendChild(clone); // カウンタアップ count++; } //--> </script> <div id="template01" style="display:none;"> <img src="http://shain.blog.conextivo.com/images/js/human_b.gif"> </div> <div id="display_area"></div> <input type="button" value="画像を複製して表示" onClick="hoge()">
これを実際にセットしてみました。
↓のボタンをクリックすると、画像(正確には、divとimg)が複製され、表示されます。
クリックする度に画像が一つづつ増えていきます。
以下、スクリプトの説明。
cloneNode で id が template01 の要素(今回の場合はdiv)を複製し、
更にその id と style(display属性) を変更してから appendChild で表示(タグの追加)させています。
なお、cloneNode で指定している引数(今回はtrue)によって、
複製する要素の子要素を引き継ぐか否かを判別します。
子要素がいらない場合はfalseをセットします。
で、結局この cloneNode は何のために使うのか?
という疑問が浮かぶと思います。
おそらく、 cleateElement を使って実際に要素(タグ)生成を行ってみると分かりますが、
一から要素を構築していくのは結構面倒です。
特に複雑かつ同じ構成の要素を並べたい場合は、スクリプトが無駄に長くなるだけです。
そんな時などに cloneNode が重宝するはずです。
以上、偏ったDOMネタでした。(久々にサクッと終わった)
名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ