我有以下代码:
<div id="container">
<div id="cat1"></div>
<div id="cat2"></div>
<div id="cat3"></div>
</div>
我可以执行 insertBefore 但没有 insertAfter...如果我想将另一只猫追加到容器中怎么办?我真的必须使用 nextSibling 吗?感觉非常奇怪的是,有一个 insertBefore ,而对于一个 insertAfter ,必须使用 hack 。有没有替代方案
function insertAfter(referenceNode, newNode) {
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}
insertAfter(document.getElementById("tres"), myscript);
最佳答案
由于您可以组合 insertBefore
和 nextSibling
,因此不需要其他函数。如果第二个参数为 null,则 insertBefore
的额外好处是表现得与 appendChild
类似。
您可以扩展原型(prototype)链来实现 insertAfter
,如下所示:
Node.prototype.insertAfter = function(n,r) {this.insertBefore(n,r.nextSibling);};
这将允许您调用:
someContainer.insertAfter(newNode, someReference);
请注意,旧版本的 IE 不喜欢你 messing with the prototype of built-in objects .
关于javascript insertAfter 替代 nextSibling hack?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16820435/