<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 ,
希望寻求帮忙 告知原因
如图
这里 你要明白removeNodeL是储存了你的node节点元素的。既然明白这个 那么我们就能分析了
for (let i = 0; i < removeNodeL.length; 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>
这样问题就出来咯~ 主要还是会分析,希望采纳