javascript - Vanilla Javascript for 循环从选定集合中删除 html 元素

标签 javascript html

var overrideField = document.querySelectorAll('.form_style_override_field');

overrideField.forEach(function (e) {
   e.parentNode.parentNode.remove();
});

我正在尝试学习 vanilla javascript 并尝试删除由类名提取的元素。

var overrideField = document.getElementsByClassName('form_style_override_field');

  for (var i = 0; i < overrideField.length; i++)
  {
     var controlGroup = overrideField[i].parentNode.parentNode; 
     controlGroup.remove();
  }

var overrideField = document.getElementsByClassName('form_style_override_field');

for (var i = 0; i < overrideField.length; i++)
{
   var controlGroup = overrideField[i].parentNode.parentNode;
   controlGroup.remove();
}
<div class="tab-pane active show" id="general">																									  
 <div class="control-group">
  <div class="control-label">Label 1</div>
  <div class="controls">
    <span class="form_style_override_field"></span>									
    Control Group 1
  </div>
 </div>
 <div class="control-group">
  <div class="control-label">Label 2</div>
  <div class="controls">
    <span class="form_style_override_field"></span>
    Control Group 2
  </div>
 </div>
</div>

overrideField 变量看到 2 个元素,它只会删除最后一个。谁能帮我解决这个问题。

谢谢!

最佳答案

getElementsByClassName返回一个实时集合,因此当您在 for 循环中删除一个元素时,集合(和长度)会发生变化,因此您的循环永远不会到达最后一个元素。使用 querySelectorAll而是返回一个静态集合,然后删除元素。

例如:

var elems = document.querySelectorAll('.class-to-remove');
elems.forEach(function(elem) {
  elem.remove();
});

关于javascript - Vanilla Javascript for 循环从选定集合中删除 html 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51068352/

相关文章:

javascript - 发现导入不起作用 : QtMultimedia is not installed

javascript - 无法使用 JavaScript 删除第一个表格行

javascript - 当浏览器宽度调整到超过特定大小时,如何绕过一个函数

html - 仅使用 HTML 使 GitHub README 在智能手机和台式机上看起来不同(CSS 受到限制)

html - 垫树水平滚动。如何添加?

javascript - 通过 jquery 连续描述 mousemove 事件

javascript - TypeError : this. state.postsList.map 不是一个函数

javascript - 将 JS 代码放入 PHP while 循环中

php - 如何通过在 wordpress 中获取帖子图像来更改宽度和高度?

javascript - 使文本响应其是否溢出其父 div