説明
ノードを複製するにはcloneNode()を使います。パラメータにtrueを指定するとノードに含まれる子ノード以下全てが複製の対象になります。falseを指定すると複製時に子ノードは含まれなくなります。複製したノードは、そのままではページ上には表示されません。ページ上に表示するには、ページ上にあるノードのいずれかに連結する必要があります。サンプルではappendChild()を使ってノードを追加しています。
ノードを複製した後に必ず重複しないID名を割り当ててからページ上に表示する(連結する)ようにしてください。ID名が重複すると正しく動作しなくなります。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>JavaScript Sample</title>
<link rel="stylesheet" type="text/css" href="main.css" media="all">
<script type="text/javascript" src="main.js"></script>
</head>
<body>
<h1>ノードを複製し追加する</h1>
<form action="./dupnode.cgi" method="get" name="mainForm">
<input type="button" id="dupButton" value="複製し追加する"><br>
</form>
<div id="dNode" class="dup"><span>複製元のテキストです</span></div>
<div id="result">結果:</div>
</body>
</html>
window.onload = function(){
document.getElementById("dupButton").onclick = function(){
var d = document.getElementById("dNode");
d = d.cloneNode(true);
d.id = "id"+(new Date()).getTime();
document.getElementById("result").appendChild(d);
}
}