gpt4 book ai didi

javascript - 使用元素的nodeList "childNodes"。为什么没有删除container2?

转载 作者:行者123 更新时间:2023-12-02 18:45:01 24 4
gpt4 key购买 nike

我有以下代码,我正在尝试动态地从元素 supercontainer 中动态删除所有“容器”元素。由于 nodeList 处于事件状态,因此以下代码应删除 container1 以及 container2 但它不是。任何人都可以告诉为什么?我如何改进此代码以便动态删除所有子节点?

<html><body></body>
<script type="text/javascript">
var supercontainer=document.createElement("div");
var container2=document.createElement("div");
var container1=document.createElement("div");
var b=document.createElement("div");
var c=document.createElement("div");
var d=document.createElement("div");
b.appendChild(document.createTextNode("book1"));
c.appendChild(document.createTextNode("book2"));
d.appendChild(document.createTextNode("book3"));
container1.appendChild(b);
container1.appendChild(c);
container1.appendChild(d);
container2.appendChild(document.createTextNode("i am container2"));
supercontainer.appendChild(container1);
supercontainer.appendChild(container2);
document.body.appendChild(supercontainer);
function removeContainers(){
var j=0;
for(i=0;i<supercontainer.childNodes.length;i++){
supercontainer.removeChild(supercontainer.childNodes[j]);
}
}
removeContainers();
</script>
</html>

最佳答案

在你的循环中,

  1. i = 0;那么nodes.length是2
  2. 第一项被删除,然后 i 变为 1,长度变为 1
  3. 循环终止条件失败

解决方案是将循环计数保存在单独的计数器变量中,例如length

使用

function removeContainers(){
var j=0, len = supercontainer.childNodes.length;
for(i=0;i<len;i++){
supercontainer.removeChild(supercontainer.childNodes[j]);
}
}

演示:Fiddle

关于javascript - 使用元素的nodeList "childNodes"。为什么没有删除container2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16478890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com