javascript - 更新 DIV 并在 1 秒后使用 setTimeout 再次清空它

标签 javascript settimeout

我在使用下面的脚本时遇到了一些问题。

为了解释背景,完整的脚本从 JSON 提要获取数据,如果自上次检查以来数据已更新,它会更改 map 上的标记并向名为 updata[] 的数组添加一行,这非常简单.

一旦 JSON 刷新完成,我想在屏幕底部的一个小通知 div 中显示每个刷新项目的通知 1 秒,然后消失。该过程应该重复,直到 updata[] 为空。

知道我做错了什么吗?

<script type='text/javascript'>

//updata[] is populated by JSON in the full version, but for now...
var updata=["Site A Updated at 00:20"," Site B Updated at 00:22"," Site C Updated at 00:24"];

var val=0;
var max=updata.length+1;

function addtodiv()
{
   document.getElementById('alarms').innerHTML = '<span>'+window.val+':'+window.updata[window.val]+'</span>'
   setTimeout(cleardiv(), 1000); // refresh in 1 secs
} 

function cleardiv()
{
    window.val++;
   document.getElementById('alarms').innerHTML = '<span>&nbsp;</span>'
   if (window.val==window.max)
   {
     window.val=0;
     window.updata=[];
   } else {
   setTimeout(addtodiv(), 200); // refresh in 0.2 secs
  }
}

addtodiv();
</script>

最佳答案

setTimeout 接受函数引用作为第一个参数。所以改变你的代码:

setTimeout(cleardiv(), 1000);

为此:

setTimeout(cleardiv, 1000);
...
setTimeout(addtodiv, 200);

您不想立即调用函数cleardiv(),您只需要提供一个引用。

关于javascript - 更新 DIV 并在 1 秒后使用 setTimeout 再次清空它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24148815/

相关文章:

javascript - 快速 JavaScript 函数帮助

javascript - 在 javascript 中删除 <tbody> 中的表

java - 将 javascript 日期传递给 java

javascript - 为什么 setTimeout 代码被阻止?

javascript - 使用 Promise.race 和 setImmediate 确定 Promise 状态

javascript - settimeout 循环没有延迟

javascript - X-可编辑简单数据库更新不更新

javascript - javascript split() 之后为子字符串赋予颜色

javascript - 如何在 react 中清除设置超时

JavaScript:setTimeOut 位于另一个 setTimeOut 中(嵌套 setTimeOut)以刺激 API 响应不起作用