私は JavaScript を使用するのが初めてで、DIV を複製するためのコードを探していたときに、ちょっとした壁にぶつかりました。次のコードを見つけました。
<html>
<body>
<form name="myform">
<input type="button" value="Click here" onclick="duplicate()">
<div id="original">
duplicate EVERYTHING INSIDE THIS DIV
</div>
<div id="duplicater">
duplicate EVERYTHING INSIDE THIS DIV
<input type="button" value="Remove Div" onclick="this.parentNode.style.display = 'none'">
</div>
<script>
var i = 0;
var original = document.getElementById('duplicater');
function duplicate() {
var clone = original.cloneNode(true); // "deep" clone
clone.id = "duplicater" + ++i;
// or clone.id = ""; if the divs don't need an ID
original.parentNode.appendChild(clone);
}
</script>
</body>
</html>
これは非常にうまく機能します。[Div の削除] ボタンを追加したので、ユーザーが追加した Div が多すぎると判断した場合は、それを削除するオプションがあります。ただし、テストでは、ユーザーが Div を最初の Div まで完全に削除すると、それ以上の Duplicate Div は表示されないことがわかりました。そのため、ユーザーはページを再起動する必要があります。これを解決するために、IF...ELSE を含めようとしました。
<html>
<body>
<form name="myform">
<input type="button" value="Click here" onclick="duplicate()">
<div id="original">
duplicate EVERYTHING INSIDE THIS DIV
</div>
<div id="duplicater">
duplicate EVERYTHING INSIDE THIS DIV
<input type="button" value="Remove Div" onclick="this.parentNode.style.display = 'none'">
</div>
<script>
var i = 0;
var original = document.getElementById('duplicater');
function duplicate() {
if (document.getElementById("duplicater")=="none")
{
document.getElementById("duplicater")="";
}
else
{
var clone = original.cloneNode(true); // "deep" clone
clone.id = "duplicater" + ++i;
// or clone.id = ""; if the divs don't need an ID
original.parentNode.appendChild(clone);
}
}
</script>
</body>
</html>
ただし、これは機能しません。私はコーディングの第一人者ではないことを完全に認めており、単純な構文の問題であっても驚かないでしょうが、これに関するあらゆる点は大いに受け入れられます.