0

我正在构建一个应用程序,它可能会在单个网页上为用户提供无限的倒数计时器。每个计时器都被设计为相互独立。例如,点击计时器 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 是我当前的服务器时间,intEndTime 是从 SQL 数据库中检索的,当用户决定终止计时器时,blnIsAbort 为真。(blnIsAbort=true)

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

2.)当我尝试取消计时器时,这导致了我的第二个问题,单击按钮 A 也会清除按钮 B 的计时器。

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

4

1 回答 1

0

你是否试图实现这样的目标:http: //jsfiddle.net/zVMaQ/1/

  1. 在这里,我创建了一个简单的CountDownTimer类。
  2. 而不是使用setInterval我已经使用setTimeout的更准确。
  3. 我为每个计时器创建了一个超时而不是多个超时。
  4. 清除计时器就像重置计时器tick方法一样简单。
  5. 我已经使用javascript/augment来构建计时器类。

您可以轻松修改它以满足您的需求。

于 2013-01-08T03:00:11.073 回答