定时器到期后退出

时间:2014-09-17 13:52:53

标签: javascript

我使用下面的数字来计算毫秒,它运行得非常好。但是我希望在计时器值为9秒时调用logout()。这是行不通的。你能有人建议吗?

</script>
<script type="text/javascript">
var timer, time = 0, start_time = 0;
function startstoptimer() 
{
   if (timer)
   {
      time += new Date().getTime() - start_time;
      start_time = 0;
      clearInterval(timer);
      timer = null;
   } 
   else 
   {
     start_time = new Date().getTime();
     timer = setInterval(function () 
     {

        document.d.d2.value = (time + new Date().getTime() - start_time)/1000;
        if((time + new Date().getTime() - start_time)/1000==9.000)
            logout();  
      }, 10);
    }
}
</script>
<script>
function logout() 
{
alert('Time is up');
}
</script>

1 个答案:

答案 0 :(得分:1)

注意不精确的浮点数比较,你不能预测比较是否会因浮点算术造成的截断/精度错误而失败,我会避免相信

这就是我要做的事情:


function startstoptimer() 
{
   if (timer)
   {
      time += new Date().getTime() - start_time;
      start_time = 0;
      clearInterval(timer);
      clearTimeout(launchLogoutTimer); // clear timeout
      timer = null;
   } 
   else 
   {
     start_time = new Date().getTime();
     timer = setInterval(function () 
     {

        document.d.d2.value = (time + new Date().getTime() - start_time)/1000;
        /*if((time + new Date().getTime() - start_time)/1000==9.000)
            logout();// dont call logout here  */
     }, 10);
     // this way, you will be sure logout will be called after 9 seconds
     // (unless you cancel it before using clearTimeout)
     launchLogoutTimer = setTimeout(logout, 9000);
   }
}