js操作dom

<div class="parent">
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
</div>

一个父节点parent下面有很多的子节点child。并且这些子节点是不断增加的。这样就会造成dom元素增多,使网页变得卡顿。所以我想让parent只保留最新的20条子节点child,每次增加就把之前的删除掉。大家有什么好的解决方案吗?

阅读 2.5k
5 个回答

建议使用框架 vue 或者 react

<!DOCTYPE html>
<html>
<body>

<ul id="myList"><li>Coffee</li><li>Tea</li><li>Milk</li></ul>

<p id="demo">点击按钮来删除列表中的首个项目。</p>

<button onclick="myFunction()">试一下</button>

<script>
function myFunction()
{
var list=document.getElementById("myList");
list.removeChild(list.childNodes[0]);
}
</script>

</body>
</html>
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <ul></ul>
    <script>
        var ul = document.querySelector('ul');
        var index = 1;
        setInterval(function () {
            ul.insertAdjacentHTML('beforeend', `<li>${index++}</li>`);
            if (ul.getElementsByTagName('li').length > 20) {
                ul.removeChild(ul.children[0]);
            }
        }, 500);
    </script>
</body>
</html>

用了 angular1.x 那可以直接用 ng-if 将不需要的项的移除吧。如果是通过 ng-repeat 生成的,那可以试试修改 ng-repeat 绑定的数组。

使用字符串的模版 不要每次创建真实的子节点 而是以字符串的形式一次添加上去

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题