如何删除 JavaScript 中元素之后的元素

How to remove elements after an element in JavaScript

在我当前的项目中,我收到了 xhr 请求,我将它们放在像这样的元素之后:el.insertAdjacentHTML('afterend', "foo bar"); 但我还没有找到一种方法来删除给定 element 之后的所有内容,否则标记将被填满。

我可以用另一个容器包裹它,但出于性能原因,我正在尝试使用尽可能少的 dom 元素。

我找到了几个 JQuery 的解决方案,这也不是一个选项,因为它太大了。

假设我有一个 nav 元素,它位于其父容器的顶部,我想在它之后放置一些东西,但在我必须删除之前存在的东西之前。

有什么想法吗? 提前致谢

在网上和此处搜索,只找到 jq 解决方案,没有 vanilla js。

JS

    el = document.querySelector("nav.mainNav");
    el.insertAdjacentHTML('afterend', "foo bar");

HTML

    <div>
    <nav></nav>
    <nav></nav>
    <nav class="mainNav"></nav>
    {...CONTENTSHOULD BE PLACED HERE, PLACING WORKS, REMOVING NOT...}
    </div>

JSII - 我正在试验类似的东西,但它似乎没有 select 所有元素。建议?

    var el = document.querySelectorAll("html > body > 
    nav.mainNav + *");

            for ( var i = 0; i < el.length; i++ ){
                el[i].remove();
            }

我找到了自己的解决办法,感谢四位的帮助!

var el = document.querySelectorAll("html > body > *:nth-child(1n+3)");
for ( var i = 0; i < el.length; i++ ){
    el[i].remove();
}

解决这个问题的方法是

el = document.querySelector("nav.mainNav");

var insertedContent = document.querySelector(".insertedContent");
if(insertedContent) {
    insertedContent.parentNode.removeChild(insertedContent);
}
el.insertAdjacentHTML('afterend', "<span class ='insertedContent'>foo bar</span>");

只需将内容放在一个元素中,并在您希望替换该元素(如果存在)时将其删除!