2多个JavaScript间隔计时器的问题

时间:2013-01-08 01:59:05

标签: javascript setinterval clearinterval

我正在构建一个可能会在单个网页上为用户提供无限倒数计时器的应用程序。每个计时器都设计为独立于另一个。例如 单击时,计时器A将倒计时10分钟,单击时计时器B将倒计时2小时。任何计时器都可以通过简单的点击随时取消。(计时器基本上是html按钮) 我使用Javascript的window.setInterval()来计算每秒

function initTimer()
{
    window.clearInterval(myTimer);
    myTimer = window.setInterval(function (){Countdown()}, 1000);
}

我的倒计时功能如下所示:

function Countdown()
{
 if (((intCurrentTime == intEndTime) || (intCurrentTime > intEndTime))||(blnIsAbort == true))
     {
        isActive=false;
        Toggle(btnID, intButtonType, intCurrentTime, intTimeDelay,blnIsAbort); //toggles the button state
        clearInterval(myTimer);
     }
     else
     {
        isActive=true;
        intCurrentTime++;
        UpdateTimer((intEndTime - intCurrentTime), btnID);
     }
}

intCurrentTime是我当前的服务器时间,从SQL DB中检索intEndTime当用户决定终止计时器时,blnIsAbort为true。 (blnIsAbort =真)

1。)现在我遇到的第一个问题是,当我刷新网页时,clearInterval(myTimer); 似乎不起作用我改为在一个按钮上运行两个定时器。 (我在页面加载时和单击按钮时调用initTimer()。

2.)当我尝试取消定时器时出现第二个问题,单击按钮A也会清除按钮B的定时器。

任何帮助避免这些问题将不胜感激。 也许有更有效的方法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

您是否尝试实现以下目标:http://jsfiddle.net/zVMaQ/1/

  1. 我在这里创建了一个简单的CountDownTimer类。
  2. 我没有使用setInterval,而是使用setTimeout来提高准确性。
  3. 我为每个计时器创建了一个超时而不是多个超时。
  4. 清除计时器就像重置计时器tick方法一样简单。
  5. 我已经使用javascript/augment来构建计时器类。
  6. 您可以轻松修改它以满足您的需求。