如何在不使用库的情况下在JavaScript中的另一个元素之后插入一个元素?

还有insertBefore()在JavaScript,但我怎么能插入一个元素后,另一种元素,而不使用jQuery或其他库?

小卤蛋LEY2020/03/11 12:04:15

您可以使用appendChild函数在元素之后插入。

参考:http : //www.w3schools.com/jsref/met_node_appendchild.asp

逆天前端宝儿2020/03/11 12:04:15
if( !Element.prototype.insertAfter ) {
    Element.prototype.insertAfter = function(item, reference) {
        if( reference.nextSibling )
            reference.parentNode.insertBefore(item, reference.nextSibling);
        else
            reference.parentNode.appendChild(item);
    };
}
GOMandy2020/03/11 12:04:14

或者您可以简单地执行以下操作:

referenceNode.parentNode.insertBefore( newNode, referenceNode )
referenceNode.parentNode.insertBefore( referenceNode, newNode )
斯丁逆天A2020/03/11 12:04:14

node1.after(node2)产生<node1/><node2/>

其中node1和node2是DOM节点。

.after()较旧的浏览器[1]不支持,因此您可能需要应用polyfill。

参考:https : //developer.mozilla.org/en-US/docs/Web/API/ChildNode/after

神乐飞云逆天2020/03/11 12:04:14
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);

referenceNode您要放置的节点在哪里newNodeIf referenceNode是其父元素中的最后一个子元素,这很好,因为referenceNode.nextSibling它将是,nullinsertBefore通过添加到列表的末尾来处理这种情况。

所以:

function insertAfter(newNode, referenceNode) {
    referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}

在这里尝试。