<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 ,希望寻求帮忙 告知原因如图
1 回答
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
这里 你要明白removeNodeL是储存了你的node节点元素的。既然明白这个 那么我们就能分析了
for (let i = 0; i < removeNodeL.length; i++) {
if (removeNodeL[i].className != "live-wrapper") {
console.log(i)
removeNode.removeChild(removeNodeL[i]);
}
};
当输出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>
这样问题就出来咯~ 主要还是会分析,希望采纳
添加回答
举报
0/150
提交
取消