2

次のコードがあります。

<div id="container">
<div id="cat1"></div>
<div id="cat2"></div>
<div id="cat3"></div>
</div>

insertBefore は実行できますが、insertAfter はありません...別の猫をコンテナに追加したい場合はどうすればよいですか? 本当に nextSibling を使用する必要がありますか? insertBefore があり、insertAfter にはハックを使用する必要があるのは非常に奇妙です。代替手段はありますか

function insertAfter(referenceNode, newNode) {
    referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}
insertAfter(document.getElementById("tres"), myscript);
4

2 に答える 2

4

insertBeforeとを組み合わせることができるのでnextSibling、別の機能は必要ありません。2 番目の引数が null の場合のinsertBeforeように動作するという追加のボーナスがあります。appendChild

insertAfter次のように、プロトタイプ チェーンを拡張して実装できます。

Node.prototype.insertAfter = function(n,r) {this.insertBefore(n,r.nextSibling);};

これにより、次のように呼び出すことができます。

someContainer.insertAfter(newNode, someReference);

古いバージョンの IEでは、組み込みオブジェクトのプロトタイプをいじるのを好まないことに注意してください。

于 2013-05-29T17:40:16.053 に答える
-1

メソッドの代わりにこの次の関数を使用すると、解決策が得られます。

    function insertAfter(referenceNode, newNode) {   
newNode.insertBefore(referenceNode.next());

}

于 2013-05-29T17:58:22.977 に答える