在多个元素上使用remove()

cmp*_*ger 5 javascript

this:document.getElementsByClassName('warningmessage').remove();如果页面上有多个warningmessage元素,则不起作用.

如何删除该类的所有元素?我必须使用for each?是不是有deleteall()的命令?

谢谢你的提示!

xda*_*azz 7

你需要使用一个循环.下面的代码显示了如何用"普通"javascript编写.

var elements = document.getElementsByClassName('warningmessage'),
    element;
while (element = elements[0]) {
  element.parentNode.removeChild(element);
}
Run Code Online (Sandbox Code Playgroud)

该工作演示.


sde*_*old 7

使用纯JavaScript,您可以这样做:

var nodes = document.getElementsByClassName('warningmessage');
for(var i = 0; i < nodes.length; i++){
  nodes[i].parentNode.removeChild(nodes[i]);
}
Run Code Online (Sandbox Code Playgroud)

因此,您首先会获得您感兴趣的节点,然后迭代它们并将它们从父节点中删除.

可悲的是,没有forEach办法NodeList.但是,你可以这样:

var nodes = document.getElementsByClassName('warningmessage');
[].forEach.call(nodes, function (node) {
  node.parentNode.removeChild(node);
});
Run Code Online (Sandbox Code Playgroud)

  • 它可能不需要; OP没有说出这种或那种方式.我只是指出一个可能不起作用的边缘情况.(请注意,thetersters的答案_will_涵盖了这一点.) (3认同)
  • 请注意,如果有嵌套元素,这可能无法获取所有元素:http://jsfiddle.net/nnnnnn/6ZYkk/ (2认同)
  • -1.不适用于[此场景](http://jsbin.com/irupow/1/),这不能真正称为边缘情况. (2认同)