JavaScriptで要素を挿入: insertAdjacentHTML、insertBefore、cloneNodeの使い分け
HTML、jQuery、append を使って要素を別の要素の後に追加する方法
このチュートリアルでは、HTML、jQuery、および append()
メソッドを使用して、ある要素を別の要素の後に追加する方法を説明します。この方法は、動的にコンテンツをページに追加したり、DOM を操作したりするのに役立ちます。
例
次の例では、<p>
要素を <div>
要素の後に追加する方法を示します。
HTML
<div id="myDiv">
<p>既存の段落</p>
</div>
JavaScript
$(document).ready(function() {
$("#myDiv").append("<p>新しく追加された段落</p>");
});
このコードを実行すると、次の結果になります。
<div id="myDiv">
<p>既存の段落</p>
<p>新しく追加された段落</p>
</div>
解説
$(document).ready(function() {...});
は、DOM が完全にロードされた後に JavaScript コードを実行するよう jQuery に指示します。$("#myDiv")
は、id
属性が "myDiv" である要素を選択します。append("<p>新しく追加された段落</p>")
は、<p>
要素の内容を "新しく追加された段落" に置き換えます。
追加オプション
after()
メソッドを使用して、要素を別の要素の 直後 に追加することもできます。
$("#myDiv").after("<p>新しく追加された段落</p>");
- 要素を既存の要素 内 に追加するには、
appendTo()
メソッドを使用します。
$("<p>新しく追加された段落</p>").appendTo("#myDiv");
<p> 要素を <div> 要素の後に追加
<!DOCTYPE html>
<html>
<head>
<title>要素の追加</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<div id="myDiv">
<p>既存の段落</p>
</div>
<script>
$(document).ready(function() {
$("#myDiv").append("<p>新しく追加された段落</p>");
});
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>要素の追加</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<ul id="myList">
<li>既存のリスト項目</li>
</ul>
<script>
$(document).ready(function() {
$("#myList").append("<li>新しく追加されたリスト項目</li>");
});
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>要素の追加</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<div id="myDiv">
<p>既存の段落</p>
</div>
<script>
$(document).ready(function() {
$("#myDiv").append("<img src='https://placehold.co/100x100' alt='画像'>");
});
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>要素の追加</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<ul id="myList">
<li>既存のリスト項目</li>
</ul>
<script>
$(document).ready(function() {
$("#myList").append("<li>新しいリスト項目1</li><li>新しいリスト項目2</li>");
});
</script>
</body>
</html>
HTML 文字列を <p> 要素内に追加
<!DOCTYPE html>
<html>
<head>
<title>要素の追加</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<p id="myParagraph">既存の段落</p>
<script>
$(document).ready(function() {
$("#myParagraph").append("<strong>太字のテキスト</strong>を追加しました。");
});
</script>
</body>
</html>
これらの例は、append()
メソッドを使用して要素を別の要素の後に追加する方法をほんの一例です。このメソッドを組み合わせることで、様々な動的なコンテンツをページに追加することができます。
HTML、jQuery 以外の方法で要素を別の要素の後に追加する方法
insertAdjacentHTML()
メソッドは、要素を既存の要素の相対的な位置に挿入するために使用できます。このメソッドには、挿入するコンテンツの種類と、挿入する位置を指定する 2 つの引数があります。
element.insertAdjacentHTML(position, text);
position
には、次のいずれかの値を指定できます。"beforebegin"
: 対象要素の直前にコンテンツを挿入します。
text
には、挿入する HTML コンテンツを指定します。
var divElement = document.getElementById("myDiv");
var newParagraph = document.createElement("p");
newParagraph.textContent = "新しく追加された段落";
divElement.insertAdjacentHTML("afterend", newParagraph);
parentNode.insertBefore(newChild, referenceNode);
parentNode
は、新しい要素を挿入する親要素です。newChild
は、挿入する新しい要素です。referenceNode
は、newChild
を挿入する位置となる既存の子要素です。
var divElement = document.getElementById("myDiv");
var existingParagraph = document.querySelector("#myDiv p");
var newParagraph = document.createElement("p");
newParagraph.textContent = "新しく追加された段落";
divElement.insertBefore(newParagraph, existingParagraph);
DOM クローニングと挿入
要素を複製して既存の要素の後に挿入するには、Node.cloneNode()
メソッドと Node.appendChild()
メソッドを使用できます。
var divElement = document.getElementById("myDiv");
var paragraphToClone = document.querySelector("#myDiv p");
var newParagraph = paragraphToClone.cloneNode(true);
divElement.appendChild(newParagraph);
HTML と jQuery 以外にも、JavaScript で要素を別の要素の後に追加する方法がいくつかあります。それぞれの方法には長所と短所があるので、状況に合わせて適切な方法を選択することが重要です。
補足
- 上記の例では、要素を動的に追加する方法を示しています。要素を静的に追加する場合は、HTML ファイルを直接編集することができます。
- パフォーマンスが重要な場合は、
insertAdjacentHTML()
メソッドを使用するのが最善の方法です。このメソッドは、ネイティブの DOM 操作を使用するため、他の方法よりも高速です。 - 要素を既存の DOM 構造に挿入する場合は、
Node.insertBefore()
メソッドを使用するのが最善の方法です。このメソッドを使用すると、新しい要素が DOM ツリー内の正しい位置に確実に挿入されます。 - 要素を複製する必要がある場合は、
Node.cloneNode()
メソッドとNode.appendChild()
メソッドを使用するのが最善の方法です。この方法を使用すると、元の要素を変更せずに新しい要素を作成することができます。
html jquery append