【发布时间】:2019-04-09 02:39:59
【问题描述】:
我正在尝试在特定超时后(等待动画完成)从特定类的 DOM 中删除所有元素。
我尝试在实时列表 (getElmentsByClassName) 和节点列表 (querySelectorAll) 中使用 for 循环。在这两种情况下,只删除一个元素。
function removeElems() {
elems = document.querySelectorAll('.header');
for (e of elems) {
setTimeout(function() {e.remove();}, 1000);
}
}
<div id="container">
<div class="header">1</div>
<div class="header">2</div>
<div class="header">3</div>
<div class="header">4</div>
<div class="header">5</div>
<div class="header">6</div>
</div>
我不确定它为什么不工作,我正在寻找解释为什么它以它的方式执行而不是实际删除所有元素。
谢谢!
(如果您愿意提供工作代码示例,请仅提供 vanilla JS。)
【问题讨论】:
-
JavaScript closure inside loops – simple practical example -
e的可能重复被全局声明并被每次迭代覆盖。当你的remove()执行时,循环已经完成很久了,并且留下e等于它设置的任何内容。
标签: javascript html css settimeout