Javaスクリプトを使用して、ul要素内のliの後にli要素を追加したいと思います。これは私がこれまでに持っているコードです。
var parentGuest = document.getElementById("one");
var childGuest = document.createElement("li");
childGuest.id = "two";
AppendChildに精通している、
parentGuest.appendChild(childGuest);
ただし、これにより、新しい要素が他の要素内に追加され、その後には追加されません。既存の要素の後に新しい要素を追加するにはどうすればよいですか?ありがとう。
<ul>
<li id="one"><!-- where the new li is being put --></li>
<!-- where I want the new li -->
</ul>
次を使用できます。
if (parentGuest.nextSibling) {
parentGuest.parentNode.insertBefore(childGuest, parentGuest.nextSibling);
}
else {
parentGuest.parentNode.appendChild(childGuest);
}
しかし、Pavelが指摘したように、referenceElementはnull/undefinedである可能性があり、その場合、 insertBefore は appendChild 。したがって、次は上記と同等です。
parentGuest.parentNode.insertBefore(childGuest, parentGuest.nextSibling);
要素の次の兄弟の前に、新しい要素を既存の要素の親に追加する必要があります。好む:
var parentGuest = document.getElementById("one");
var childGuest = document.createElement("li");
childGuest.id = "two";
parentGuest.parentNode.insertBefore(childGuest, parentGuest.nextSibling);
または、追加するだけの場合:
var parentGuest = document.getElementById("one");
var childGuest = document.createElement("li");
childGuest.id = "two";
parentGuest.parentNode.appendChild(childGuest);
単純なJSソリューションを探している場合は、nextSibling
に対してinsertBefore()
を使用するだけです。
何かのようなもの:
_parentGuest.parentNode.insertBefore(childGuest, parentGuest.nextSibling);
_
nextSibling
のデフォルト値はnull
であるため、特別なことをする必要はありません。
更新:if
は_parentGuest.nextSibling
_の存在を確認する必要さえありません。次の兄弟はありません。null
を返し、null
をinsertBefore()
の2番目の引数に渡すことは、最後に追加することを意味します。
参照:
。
JQueryを使用している場合(それ以外の場合は無視し、上記の単純なJSの回答を述べています)、便利なafter()
メソッドを活用できます。
_$("#one").after("<li id='two'>");
_
参照:
これで十分です:
parentGuest.parentNode.insertBefore(childGuest, parentGuest.nextSibling || null);
refnode
(2番目のパラメーター)がnullの場合、通常のappendChildが実行されるためです。ここを参照してください: http://reference.sitepoint.com/javascript/Node/insertBefore
実際、|| null
が必要です。試してみてください。
あなたもできる
function insertAfter(node1, node2) {
node1.outerHTML += node2.outerHTML;
}
または
function insertAfter2(node1, node2) {
var wrap = document.createElement("div");
wrap.appendChild(node2.cloneNode(true));
var node2Html = wrap.innerHTML;
node1.insertAdjacentHTML('afterend', node2Html);
}
MDNの引用
ChildNode.after()
メソッドは、このDOMString
の直後に、このChildNode
の親の子リストにNodeまたはChildNode
オブジェクトのセットを挿入します_。DOMStringオブジェクトは、同等のテキストノードとして挿入されます。
ブラウザのサポートは、Chrome(54 +)、Firefox(49 +)、Opera(39+)です。 IEおよびEdge。
var Elm=document.getElementById('div1');
var Elm1 = document.createElement('p');
var Elm2 = Elm1.cloneNode();
Elm.append(Elm1,Elm2);
//added 2 paragraphs
Elm1.after("This is sample text");
//added a text content
Elm1.after(document.createElement("span"));
//added an element
console.log(Elm.innerHTML);
<div id="div1"></div>
スニペットでは、別の用語を使用しました append too