如何一次性删除 div 内的所有子节点,以便在使用 javascript 执行代码行后它是空的?

How can I delete all Child Nodes inside a div in one shot in such a way it is empty after that code lines are executed using javascript?

我正在尝试在 javascript 中实现一段代码,它删除 div 中的所有子节点,这样在执行代码后它是空的。我正在考虑使用 while 循环和应用于此 div 的 hasChildNodes() 方法,并在循环的参数内插入一行代码,删除此 div 在每次检查中,直到它删除所有子节点,但我发现它很麻烦。有没有一种更快的方法可以使用某种方法摆脱 div 中的所有元素?

Jquery 的 $.html() 方法。

像这样:

$('#parent').html('');

里面的所有子元素都将替换为'';

$('div').children().each(function(index){
    $(this).remove();
});

如果您不使用任何库,例如 jQuery、dojo 或在子节点上使用 SVG 或事件,一个选项是:

var node = document.getElementById("foo");
node.innerHTML = "";

如果您正在使用像 dojo 或 jQuery 这样的库,那么您将避免内存泄漏,因为对来自 javascript 的子节点的引用未被清除,因此 dom节点永远不会被释放。

始终使用适当的库方法来清除 DOM,以便它可以释放事件注册、节点引用,例如jQuery: api.jquery.com/empty

如果要清除div有子节点和文本的,可以将其innerHTML设置为空文本。

var target = document.getElementById("target");
setTimeout(function() {
  target.innerHTML = "";
},3000);
The text below will disappear after three seconds.
<div id="target">
  Some text.
  <div>
    Some text inside a child node.
  </div>
</div>