Javascript 动态删除先前动态添加的div
我编写了一个函数来将div动态插入网页。但我必须把这些div去掉。在添加div时,我对所有div使用了一个类名。因此,我使用getElementsByCassName()从dom中获取所有元素,循环遍历所有这些元素并删除div。我的代码没有删除之前创建的所有div 请查找我的代码片段:Javascript 动态删除先前动态添加的div,javascript,Javascript,我编写了一个函数来将div动态插入网页。但我必须把这些div去掉。在添加div时,我对所有div使用了一个类名。因此,我使用getElementsByCassName()从dom中获取所有元素,循环遍历所有这些元素并删除div。我的代码没有删除之前创建的所有div 请查找我的代码片段: var elements = document.getElementsByClassName("xxxx"); for (var i = 0; i < elements .length; i++) {
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");
}
var elements=document.getElementsByClassName(“xxxx”);
for(var i=0;i
您需要删除最后一行“elements=document.getElementsByClassName(“xxxx”);”-该行将导致您在循环过程中遗漏所有其他元素。如果您只想删除该类中的所有DIV元素,可以使用以下代码:
var elements = document.getElementsByClassName("xxxx");
while ( elements[0] ) {
elements[0].parentNode.removeChild(elements[0]);
}
它还将删除您的div及其子节点。另外,“if(element&&element.hasChildNodes())”行意味着您将只删除包含子元素的div。这就是你的意思吗?是的,我的div总是有子节点或文本节点。Hmmm。也许可以尝试添加一些console.log语句,或者使用firebug(或类似工具)添加一些断点,以查看它在做什么。抱歉-在我看来,您的代码中没有其他明显的错误…我得到了解决方案,但速度非常慢。每次删除div时,elements.length都在更改。所以,for循环中的i是递增的,长度也被1缩减。所以这个循环正在中间进行。所以在我增加I值之后,我再次减少它。这样做确实可以解决问题,但处理速度非常慢。