Javascript 删除子节点会阻止删除其他同级节点吗?

Javascript 删除子节点会阻止删除其他同级节点吗?,javascript,firefox-addon,xul,Javascript,Firefox Addon,Xul,我正在尝试从元素#loginformErrorRapper中删除class.FormErrorMessage的所有子节点。如果有区别的话,这些是XUL“描述”元素 使用此代码: var Messages = document.getElementById('LoginFormErrorWrapper').getElementsByClassName("FormErrorMessage"); for (var i = 0; i < Messages.length; i++) { var

我正在尝试从元素#loginformErrorRapper中删除class.FormErrorMessage的所有子节点。如果有区别的话,这些是XUL“描述”元素

使用此代码:

var Messages = document.getElementById('LoginFormErrorWrapper').getElementsByClassName("FormErrorMessage");
for (var i = 0; i < Messages.length; i++) {
   var node = Messages[i];
   document.getElementById('LoginFormErrorWrapper').removeChild(node); 
}
var Messages=document.getElementById('LoginFormErrorWrapper').getElementsByClassName(“FormErrorMessage”);
对于(var i=0;i

仅删除第一个元素。消息包含所有元素,但一旦第一个子元素被删除,循环就会停止。如果我注释掉removeChild行并通知节点,它会通知所有节点。为什么在删除第一个子项后它会停止循环?父级仍然存在。

getElementsByClassName
返回一个live节点列表。因此,当您从DOM中删除一个元素时,它也会从节点列表中删除,从而产生各种副作用

可以通过将节点列表转换为数组来避免它们

var Messages = [].slice.call(document.getElementById('LoginFormErrorWrapper').getElementsByClassName("FormErrorMessage"));