(多个)jQuery的问题计数

时间:2015-02-10 12:46:51

标签: javascript jquery countdown

我现在正在筹码。目标是在页面上显示多个计数。一个带有interval()的计数不是问题,但是当它达到两个或更多个计数时,它只会显示最后一个计数。

计数结构:

  • <div value"....."> <div>

    获取unix时间戳

    示例:<div id=countup value"jan,01,2015, 00:00:00"> <div>

  • 将jix的unix时间戳转换为一个很好的倒计时。

  • 使用.html().text()

  • 显示页面上的所有计数

Jsfiddle.net

希望你能帮助我。

1 个答案:

答案 0 :(得分:2)

这就是你要找的东西吗?:

<div class="countup" value="jan,01,2014,00:00:00"></div>
<div class="countup" value="feb,05,2015,13:00:00"></div>

function upTime(element) {
    now = new Date();
    countTo = new Date(element.getAttribute("value"));
    difference = (now-countTo);

    days=Math.floor(difference/(60*60*1000*24)*1);
    hours=Math.floor((difference%(60*60*1000*24))/(60*60*1000)*1);
    mins=Math.floor(((difference%(60*60*1000*24))%(60*60*1000))/(60*1000)*1);
    secs=Math.floor((((difference%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1);

    element.innerHTML =  "It's been " + days + " days " + hours + " hours " + mins + " minutes " + secs + " seconds";

    setTimeout(function(){ upTime(element); },1000);
}

var elements = document.getElementsByClassName("countup");
for (var i = 0; i < elements.length; i += 1) {
    upTime(elements[i]);
}

jsFiddle:http://jsfiddle.net/6f6c8z4a/1/

输出:

It's been 405 days 13 hours 58 minutes 43 seconds
It's been 5 days 0 hours 58 minutes 43 seconds

需要注意的一点是,setTimeout(.., 1000)不是每秒运行代码的可靠方法,因为setTimeout会做出尽力而为。在实践中,计时器将很快开始倾斜。您可以考虑更频繁地运行此代码(每100毫秒),或者您可以忽略偏斜。