使用appendchild时,Javascript childNodes找不到div的所有子节点

使用appendchild时,Javascript childNodes找不到div的所有子节点,javascript,Javascript,好吧,我希望有人能帮我。我很抱歉,这可能会让人困惑。我举了一个例子,试图帮助缓解这种混乱,因为这是更好地看到,然后听到 我创建了一个包含一个组或一组组组的网页。每个组都有一个子组。简而言之,现在正在发生的是,这个页面将允许我将包含子组的多个组合并到一个新组中。为了避免混淆,在将旧的子组合并到新组之前,该页面将提供重命名旧子组的机会 当一个组被重命名时,它将进行检查以确保没有具有该名称的组。如果有,它会将自己从自己的组复制到该组中,然后删除原始组。如果该组不存在,它将创建该组,在中复制自身,然后删

好吧,我希望有人能帮我。我很抱歉,这可能会让人困惑。我举了一个例子,试图帮助缓解这种混乱,因为这是更好地看到,然后听到

我创建了一个包含一个组或一组组组的网页。每个组都有一个子组。简而言之,现在正在发生的是,这个页面将允许我将包含子组的多个组合并到一个新组中。为了避免混淆,在将旧的子组合并到新组之前,该页面将提供重命名旧子组的机会

当一个组被重命名时,它将进行检查以确保没有具有该名称的组。如果有,它会将自己从自己的组复制到该组中,然后删除原始组。如果该组不存在,它将创建该组,在中复制自身,然后删除原始组

子组也可以重命名,此时它们将移动到具有相同名称的组中(如果该组存在),或者创建一个新的组(如果不存在)

页面有一个主div。主div包含“new sub group”div。在每个分区中都有另一个包含“旧子组”分区的分区。在重命名组时,我使用循环遍历“new sub group”div的子节点以查找每个子节点。然后将它们复制到主div中的新div中

问题的症结在于此。如果我循环一个DIV并将其中的所有DIV复制到一个新的或现有的DIV中,那么一切都很好。然后,当我尝试获取该DIV并将其所有DIV复制到另一个或新DIV时,它总是跳过其中一个移动的DIV

为了简单起见,我复制了下面的整个工作代码。要重新创建问题,请单击图像应显示在名称ewrewrwe旁边的位置,然后将其重命名为其他名称。一切都很好。现在,以相同的方式单击该新组,并将其命名为其他名称。您将看到它每次跳过一个

我已将页面链接到此处:

该链接是干净的,这是我的个人网站,我使用的一个本地摩托车组我的一部分

谢谢大家的帮助!!!如果我能澄清什么,请告诉我


我知道现在的代码不是最好的,它只是演示代码,我的目的是让概念发挥作用,然后将其简化。

在循环中,您有一个计数器,可以递增,并且将节点从列表中拉出。也就是说,
obj.childNodes.length
将在您从容器中取出某个对象时发生更改。

删除节点后,您需要减少计数,否则将跳过刚刚取代删除节点的节点

        for ( var count = 0; count < obj.childNodes.length; count++ )
        {
            if(obj.childNodes[count].tagName == 'DIV'){
                 //alert(obj.childNodes[count].tagName +" - "+obj.childNodes[count].id);
                 RenameOldSubGroup(obj.childNodes[count].id,NewNewGroupName)

                 count--;  // Decrement count to account for node you removed
            }
        }
for(var count=0;count
+1-比我先到那里。将最大迭代次数存储在变量
中的循环(var count=0,max=obj.childNodes.length;count
更有效。@Andy:这仍然不起作用,因为数组的长度在循环过程中会发生变化。问题是计数在增加,跳过了现在未移动的节点。@Jeff B:我明白你的意思了。减少计数或按相反顺序循环,并预先结束而不是追加,这应该是有效的。哇,你们太棒了!我不敢相信我错过了。我想我在写了这么多其他的代码或其他东西后,大脑冻结了。谢谢你的帮助@昨天泽:这种事一直发生在我身上。