Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.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中具有特定标记名的所有DOM元素_Javascript_Html_Dom - Fatal编程技术网

删除Javascript中具有特定标记名的所有DOM元素

删除Javascript中具有特定标记名的所有DOM元素,javascript,html,dom,Javascript,Html,Dom,如何使用Javascript删除具有特定标记名的所有元素。例如,我做了以下工作: var els = document.getElementsByTagName("center"); 它返回一个包含所有center元素的数组。如何删除所有这些元素 来自,我知道我可以循环通过els,找到每个元素的父元素,然后删除该特定节点。但是javascript是否提供了其他方式呢。就像我们可以在jquery中执行$('center').remove(),它会删除带有center标记的所有元素。任何类似于Ja

如何使用Javascript删除具有特定标记名的所有元素。例如,我做了以下工作:

var els = document.getElementsByTagName("center");
它返回一个包含所有
center
元素的数组。如何删除所有这些元素


来自,我知道我可以循环通过
els
,找到每个元素的父元素,然后删除该特定节点。但是javascript是否提供了其他方式呢。就像我们可以在jquery中执行
$('center').remove()
,它会删除带有
center
标记的所有元素。任何类似于Javascript中的内容?

只要提到您仍然在元素上循环(无法避免),您就可以这样做:

Array.prototype.slice.call(document.getElementsByTagName('center')).forEach(
  function(item) {
    item.remove();
    // or item.parentNode.removeChild(item); for older browsers (Edge-)
});
演示:

关于切片的一些注意事项:

document.getElementsByTagName
不返回数组,它返回一个长度为 财产。这就是为什么需要首先将其转换为数组(
array.prototype.slice
对任何具有
length
属性的对象执行此操作)。通过这样做,您消除了列表处于活动状态(更改DOM时会更新)的问题,还可以让其他数组函数(如
forEach
)工作,这些函数具有更为实用的循环语法

“它返回了所有中心元素的数组。”

它返回了一个类似数组的对象(一个活动节点列表或一个HTMLCollection,具体取决于浏览器)

“如何删除所有这些元素?”

您必须循环浏览列表,一次删除一个,正如您在问题后面提到的那样。如果您发现自己经常这样做,请将循环封装在函数中,这样您就不必重复它

“我们可以在jquery中执行
$('center').remove()
,它会删除带有中心标记的所有元素。与Javascript中的类似吗?”


jQuery是JavaScript函数的集合,因此它不能做任何JavaScript不能做的事情。jQuery的
.remove()
方法(与大多数其他jQuery方法一样)将在内部循环,这样就省去了您的思考。回到我上面提到的,将loop/remove代码封装在一个函数中,以便您可以从代码的任何部分使用它。

但是您仍然需要loop.FWIW,jQuery
$('center')。remove()
仍然会在内部循环节点。使用纯javascript,如果您需要删除某些标记,您必须遍历DOM。如果没有循环,就不可能进行遍历。感谢您的回答以及您对
live NodeList
的介绍。自从我“进入”web开发时,我就对它有这种错误的认识;)谢谢,不客气。有关位于的列表类型的详细信息。这需要更多投票。为什么要使用
item.parentNode.removeChild
而不是
item.remove
?@greenracoon23 remove方法较新,在旧浏览器中不受支持。不过,我会把它添加到答案中,谢谢!