javascript insertAfter 替代 nextSibling hack?

标签 javascript

我有以下代码:

<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);

最佳答案

由于您可以组合 insertBeforenextSibling,因此不需要其他函数。如果第二个参数为 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/

相关文章:

javascript - 动态更改输入字段的视觉顺序的简单方法(不更改表单 HTML)?

javascript - Angular JS <a href> 路由回登录

javascript - 如何禁用 show() 之后的刷新

javascript - 时刻时差不会使用时刻时区,而是用户计算机时间

javascript - lodash递归查找数组中的项目

javascript - 在注册过程中从外部 API 验证用户名匹配

javascript - 从父组件访问子组件的 FORMIK 表单字段值 - React JS

javascript - 为导入的 .obj 文件 three.js 禁用背面剔除

javascript - 无法从单个 .js 条目(导入多个 .scss 文件)中提取多个 .css 文件?

javascript - 如何获取带有表ID的dhtmlx表对象?