Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态删除先前动态添加的div_Javascript - Fatal编程技术网

Javascript 动态删除先前动态添加的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++) {

我编写了一个函数来将div动态插入网页。但我必须把这些div去掉。在添加div时,我对所有div使用了一个类名。因此,我使用getElementsByCassName()从dom中获取所有元素,循环遍历所有这些元素并删除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");

 }
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值之后,我再次减少它。这样做确实可以解决问题,但处理速度非常慢。