2012-10-17 81 views
0

我写了一个函数将div动态地插入到网页中。但后来我必须删除这些div。添加div时,我使用了一个classname到所有的div。所以我使用getElementsByClassName()从dom中获取了所有元素,并遍历所有这些元素并删除了div。我的代码并没有删除先前创建的所有div。动态删除以前动态添加的div

请找我的代码片段:

var elements = document.getElementsByClassName("xxxx"); 

for (var i = 0; i < elements .length; i++) { 

    var element = elements[i]; 

    if (element && element.hasChildNodes()) { 

     var parent_node = element.parentNode; 

     while(element.firstChild) { 

      parent_node.insertBefore(element.firstChild, element); 
     } 

     parent_node.removeChild(element); 

    } 

    elements = document.getElementsByClassName("xxxx"); 

} 

回答

0

您需要删除最后一行 “元素= document.getElementsByClassName(” XXXX “);” - 当你绕着循环走时,那条线会让你错过其他每个元素。

+0

即使我删除它不工作。 – user1588142

+0

此外,“if(element && element.hasChildNodes())”行意味着您只能删除具有子元素的div。那是你的意思吗? –

+0

是的,我的div总是有子节点或文本节点。 – user1588142

0

如果你想要的是删除与该类别的所有DIV元素,你可以使用此代码:

var elements = document.getElementsByClassName("xxxx"); 
while (elements[0]) { 
    elements[0].parentNode.removeChild(elements[0]); 
} 

它会删除你的资料核实和他们的子节点为好。

+0

是的,它的工作。谢谢。 – user1588142