我在下面的脚本中遇到了一些问题。

为了说明背景,完整脚本会从JSON提要中获取数据,如果自上次检查以来已进行了更新,它将更改地图上的标记并将行添加到名为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/

10-09 14:39