for循环遍历出错

<body>

    <div id="J_APP_Wrapper">

        <div class="" recharge="true">1</div>

        <div class="" recharge="true">2</div>

        <div class="" recharge="true">3</div>

        <div class="live-wrapper">4</div>

    </div>

    <script type="text/javascript">

    window.onload = function() {

        remove()

    }

    // 删除节点

    function remove() {

        var removeNode = document.getElementById("J_APP_Wrapper");

        var removeNodeL = removeNode.children;

        console.log(removeNodeL)

        for (var i = 0; i < removeNodeL.length; i++) {

            if (removeNodeL[i].className != "live-wrapper") {

                removeNode.removeChild(removeNodeL[i])

            }

            // if (removeNodeL[i].getAttribute("recharge") == "true") {

            //     removeNode.removeChild(removeNodeL[i])

            // };


        };

    }

    </script>

</body>

问题是 按照我的逻辑我是删除className != "J_APP_Wrapper" 的节点 
但是 结果是出现2和4 ,
希望寻求帮忙 告知原因
如图

https://img.mukewang.com/5c6f5cdb0001896608000256.jpg

函数式编程
浏览 402回答 1
1回答

尚方宝剑之说

这里 你要明白removeNodeL是储存了你的node节点元素的。既然明白这个 那么我们就能分析了for (let i = 0; i < removeNodeL.length; i++) {&nbsp; &nbsp; if (removeNodeL[i].className != "live-wrapper") {&nbsp; &nbsp; &nbsp; &nbsp; console.log(i)&nbsp; &nbsp; &nbsp; &nbsp; removeNode.removeChild(removeNodeL[i]);&nbsp; &nbsp; }};当输出i时会发现按道理来说 应该会输出三次,可这里为什么只有两次呢,原因是开头说了removeNodeL是储存了节点,当你每次删除了节点后,removeNodeL数组里面的值也会减少当i=0的时候 removeNodeL的值为<div>2</div><div>3</div><div>4</div>当i=1的时候 (注意,此时removeNodeL[1]是<div>3</div>!)removeNodeL的值为<div>2</div><div>4</div>这样问题就出来咯~ 主要还是会分析,希望采纳
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript