如何在JavaScript中删除DOM节点的所有子元素?
假设我有以下(难看的) HTML:
<p id="foo">
<span>hello</span>
<div>world</div>
</p>
然后我像这样抓取我想要的节点:
var myNode = document.getElementById("foo");
怎样才能删除foo
的子节点,只剩下<p id="foo"></p>
?
我能不能这样做:
myNode.childNodes = new Array();
或者我应该使用removeElement
的某种组合
我希望答案是直截了当的DOM;不过,如果您还提供了jQuery格式的答案以及仅限DOM的答案,则需要额外加分。
发布于 2010-10-18 05:02:51
如果您使用jQuery:
$('#foo').empty();
如果您不这样做:
var foo = document.getElementById('foo');
while (foo.firstChild) foo.removeChild(foo.firstChild);
发布于 2013-04-03 02:02:23
最快的。
var removeChilds = function (node) {
var last;
while (last = node.lastChild) node.removeChild(last);
};
感谢Andrey Lushnikov的his link to jsperf.com (很酷的网站!)
编辑:需要说明的是,firstChild和lastChild在Chrome上没有性能差异。顶部的答案显示了一个很好的性能解决方案。
发布于 2020-07-28 16:05:59
使用elm.replaceChildren()
。
它是实验性的,没有广泛的支持,但在没有参数的情况下执行时,它将执行您所要求的操作,而且它比遍历每个子对象并删除它更有效。如前所述,用空字符串替换innerHTML
将需要浏览器进行超文本标记语言解析。
https://stackoverflow.com/questions/3955229
复制相似问题