用于循环的Vanilla Javascript从所选集合中删除html元素

用于循环的Vanilla Javascript从所选集合中删除html元素,javascript,html,Javascript,Html,我正在尝试学习vanilla javascript,并尝试删除一个由类名拉入的元素 var overrideField = document.querySelectorAll('.form_style_override_field'); overrideField.forEach(function (e) { e.parentNode.parentNode.remove(); }); var overrideField=document.getElementsByClassName('

我正在尝试学习vanilla javascript,并尝试删除一个由类名拉入的元素

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

overrideField.forEach(function (e) {
   e.parentNode.parentNode.remove();
});
var overrideField=document.getElementsByClassName('form_style_override_field');
对于(变量i=0;i
var overrideField=document.getElementsByClassName('form_style_override_field');
对于(变量i=0;i

标签1
对照组1
标签2
对照组2
返回一个活动的集合,因此当您删除for循环中的一个元素时,集合(和长度)会发生变化,因此循环永远不会到达最后一个元素。改为使用返回静态集合,然后删除元素

例如:

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

  for (var i = 0; i < overrideField.length; i++)
  {
     var controlGroup = overrideField[i].parentNode.parentNode; 
     controlGroup.remove();
  }
返回一个活动集合,因此当您删除for循环中的一个元素时,集合(和长度)会发生更改,因此循环永远不会到达最后一个元素。改为使用返回静态集合,然后删除元素

例如:

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

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

您能否创建一个复制错误的最小工作示例?请通过单击括号按钮在4面板编辑器中发布您的HTML和JavaScript来提供一个示例:
@mhodges我添加了一个片段,它删除了数组中的第一个元素,而不是我上面提到的最后一个元素。感谢您的关注。您能创建一个复制错误的最小工作示例吗?请提供一个示例,通过单击括号按钮在4面板编辑器中发布HTML和JavaScript:
@mhodges我添加了一个片段,它删除了数组中的第一个元素,而不是我上面提到的最后一个元素。谢谢你看。我真的不知道QuerySelector。谢谢我创建了一个JSFIDLE来尝试它,太棒了!是的,QuerySelector都成功了。感谢您提供的解决方案和解释getElementByClassName行为。我真的不知道querySelectorAll。谢谢我创建了一个JSFIDLE来尝试它,太棒了!是的,QuerySelector都成功了。感谢您提供解决方案并解释getElementByClassName行为。