javascript - 在特定时间后删除类的所有元素

标签 javascript html css settimeout

我试图在特定超时后(等待动画完成)从特定类的 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。)

最佳答案

好吧,如果您使用 letconst 正确声明您的变量,它将被修复,因为 e 将被限制在每次迭代中循环的。

function removeElems() {
  const elems = document.querySelectorAll('.header');
  for (const e of elems) {
    setTimeout(function() {e.remove();}, 1000);
  }
}

但是,这些多个 setTimeout 调用是多余的。只需将循环移动到单个回调即可。

function removeElems() {
  const elems = document.querySelectorAll('.header');
  setTimeout(function() {
    for (const e of elems) {
      e.remove();
    }
  }, 1000);
}

关于javascript - 在特定时间后删除类的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55584343/

相关文章:

javascript - 防止浏览器在 asp.net 中关闭

javascript - 这不适用于 Firefox?我该如何解决?

css - jQuery-UI Datepicker CSS问题

html - 导航栏中的元素对齐

javascript - 如何根据页面上的滚动位置设置片段标识符

css - 更改 CF9 中 cflayout 选项卡的外观

css - 在浏览器中放大或缩小时的网站布局 "breaks apart"+ 其他一些基本的 css 问题

javascript - Phantom.js - 如何使用 promise 而不是回调?

php - 如何将此 PHP 正则表达式转换为 Javascript 正则表达式?

javascript - ASP.NET中 Crystal 报表的空白结果问题