我在JavaScript中有一个变量存储时间。例如,duration
是一个变量,它以分钟和小时为单位存储时间,如14分钟或1小时20分钟。如何在JavaScript中使用此变量制作倒数计时器?
答案 0 :(得分:0)
一种方法是使用正则表达式提取所需的值,并使用setInterval()
调用函数来定期更新计时器。
以下表达式符合您的模式:
/^\s*(?:(\d+)\s+hour(?:s)?\s*)?(\d+)\s+minute(?:s)?$/i
第一个捕获组将为您提供小时数,第二个捕获组将为您提供分钟数。您可以使用match
方法访问它们。这将返回一个包含匹配项的数组,每个匹配项包含一个项目(如果未找到匹配项,则返回null
。)
然后你可以分别得到h
和m
小时数和这样的分钟数
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);
}