制作倒数计时器,其中存储的时间是变量

时间:2016-09-22 03:28:54

标签: javascript

我在JavaScript中有一个变量存储时间。例如,duration是一个变量,它以分钟和小时为单位存储时间,如14分钟或1小时20分钟。如何在JavaScript中使用此变量制作倒数计时器?

1 个答案:

答案 0 :(得分:0)

一种方法是使用正则表达式提取所需的值,并使用setInterval()调用函数来定期更新计时器。

以下表达式符合您的模式:

/^\s*(?:(\d+)\s+hour(?:s)?\s*)?(\d+)\s+minute(?:s)?$/i

第一个捕获组将为您提供小时数,第二个捕获组将为您提供分钟数。您可以使用match方法访问它们。这将返回一个包含匹配项的数组,每个匹配项包含一个项目(如果未找到匹配项,则返回null。)

然后你可以分别得到hm小时数和这样的分钟数

time  = "1 hour 10 minute";
match = time.match(/^\s*(?:(\d+)\s+hour(?:s)?\s*)?(\d+)\s+minute(?:s)?$/i);

if(match)
{
  h = (match[1] === undefined) ? 0 : match[1]; // The number of hours
  m = (match[2] === undefined) ? 0 : match[2]; // The number of minutes
}

这会给你你想等待的时间。您可以轻松地将其转换为毫秒(因为它更方便)并且每秒更新一次,例如直到它达到0。

setInterval() javascript函数允许您每 x 毫秒调用一个函数(您的更新函数)。此函数返回一个标识符,您可以存储该标识符并稍后传递给clearInterval()函数以清除先前设置的计时器。

interval = h * 3600000 + m * 60000; // the interval in ms
stopTime = new Date((new Date()).getTime() + interval); // when to stop counting

counter = setInterval(count, 1000);

您的count函数只需要获取当前时间,更新时间间隔并检查此时间是否低于或等于0以停止计时器。

function count()
{
  now      = new Date();
  interval = Math.max(0, stopTime.getTime() - now.getTime());

  if(interval <= 0) clearInterval(counter);
}

Here is an example of such a timer.