Javascript JS:删除具有for循环的多个子节点?

Javascript JS:删除具有for循环的多个子节点?,javascript,loops,for-loop,iteration,child-nodes,Javascript,Loops,For Loop,Iteration,Child Nodes,我想执行一个函数,该函数迭代元素的子节点,然后删除每个子节点 在我当前的设置中,由于某些原因,只有一些子节点被删除,而有些没有。该函数需要运行多次才能删除所有节点。为什么不一次删除所有节点 下面是代码的简化版本: const deleteBtn=document.getElementByIddeleteBtn; const sidebar=document.getElementByIdsidebar; deleteBtn.addEventListenerclick,=>{ const link

我想执行一个函数,该函数迭代元素的子节点,然后删除每个子节点

在我当前的设置中,由于某些原因,只有一些子节点被删除,而有些没有。该函数需要运行多次才能删除所有节点。为什么不一次删除所有节点

下面是代码的简化版本:

const deleteBtn=document.getElementByIddeleteBtn; const sidebar=document.getElementByIdsidebar; deleteBtn.addEventListenerclick,=>{ const links=sidebar.children; console.loglinks 对于let i=0;i正如Pablo所说,我认为问题可能是您正在从正在迭代的列表中删除项目,尽管如果这是问题所在,我希望看到更多的链接,所以我不确定

无论如何,我认为在列表上反向迭代并删除它们可能会解决这个问题,那么这个呢

const deleteBtn=document.getElementByIddeleteBtn; const sidebar=document.getElementByIdsidebar; deleteBtn.addEventListenerclick,=>{ const links=sidebar.children; console.loglinks 对于let i=links.length-1;i>=0;i-{ 常量链接=链接[i]; 链接。删除 } } .侧边栏链接组{ 显示器:flex; 弯曲方向:立柱; } 单击以删除所有链接
正如Pablo所说,我认为问题可能是您正在从正在迭代的列表中删除项目,尽管如果这是问题所在,我希望看到更多的链接,所以我不确定

无论如何,我认为在列表上反向迭代并删除它们可能会解决这个问题,那么这个呢

const deleteBtn=document.getElementByIddeleteBtn; const sidebar=document.getElementByIdsidebar; deleteBtn.addEventListenerclick,=>{ const links=sidebar.children; console.loglinks 对于let i=links.length-1;i>=0;i-{ 常量链接=链接[i]; 链接。删除 } } .侧边栏链接组{ 显示器:flex; 弯曲方向:立柱; } 单击以删除所有链接
删除第0个元素时,第一个元素变为第0个,第二个元素变为第1个,依此类推,因此在第一个i++之后,您将删除原始的第2个元素,依此类推;这就是为什么您的算法只删除其他子项而不是每个子项

这通常是您希望使用一段时间而不是数组迭代的算法类型:

const deleteBtn=document.getElementByIddeleteBtn; const sidebar=document.getElementByIdsidebar; deleteBtn.addEventListenerclick,=>{ whilesidebar.children.length>0{ 侧边栏。子项[0]。删除; } console.log'done'; } .侧边栏链接组{ 显示器:flex; 弯曲方向:立柱; } 单击以删除所有链接
删除第0个元素时,第一个元素变为第0个,第二个元素变为第1个,依此类推,因此在第一个i++之后,您将删除原始的第2个元素,依此类推;这就是为什么您的算法只删除其他子项而不是每个子项

这通常是您希望使用一段时间而不是数组迭代的算法类型:

const deleteBtn=document.getElementByIddeleteBtn; const sidebar=document.getElementByIdsidebar; deleteBtn.addEventListenerclick,=>{ whilesidebar.children.length>0{ 侧边栏。子项[0]。删除; } console.log'done'; } .侧边栏链接组{ 显示器:flex; 弯曲方向:立柱; } 单击以删除所有链接 您可以这样做:

const deleteBtn=document.getElementByIddeleteBtn; const sidebar=document.getElementByIdsidebar; deleteBtn.addEventListenerclick,=>{ whilesidebar.第一个孩子{ 侧边栏。子项[0]。删除; } console.log'done'; } .侧边栏链接组{ 显示器:flex; 弯曲方向:立柱; } 单击以删除所有链接 您可以这样做:

const deleteBtn=document.getElementByIddeleteBtn; const sidebar=document.getElementByIdsidebar; deleteBtn.addEventListenerclick,=>{ whilesidebar.第一个孩子{ 侧边栏。子项[0]。删除; } console.log'done'; } .侧边栏链接组{ 显示器:flex; 弯曲方向:立柱; } 单击以删除所有链接
问题可能是您正在迭代要从中删除项的同一集合问题可能是您正在迭代要从中删除项的同一集合