jQuery倒计时 - 每日倒计时,还有二次倒计时?

时间:2012-10-30 09:42:58

标签: javascript countdown

1。每日倒计时

我正在尝试使用Keith Wood的jQuery倒计时插件(http://keith-wood.name/countdownRef.html)来创建每日倒计时页面。 E.g:

  • A - 每天倒计时到07:00
  • B - 每天倒计时到09:00
  • C - 每天减少到11:00

我是以一种相当黑客的方式做的事情:

var foo = new Date();
foo.setHours(11)
foo.setMinutes(0)
foo.setSeconds(0)
$('#fooCountdown').countdown({until: foo});

基本上,我只是创建一个默认为now的新Date对象,然后将时间设置为我今天想要的时间。

然而,这非常hacky,并且它在一天结束时也没有重置 - 一旦新的一天结束,它仍然倒数到前一天的时间。

使用此插件进行每日倒计时是否有更清洁或更好的方式?

2。二级倒计时

其次 - 我还希望每次倒计时到期时都倒计时到当天晚些时候。

E.g。对于A - 一旦到达07:00,它就开始倒数到当天的15:00。

我正在使用onExpiry函数执行此操作:

$('#officeCountdown').countdown({until: officeOpens, onExpiry: OfficeOpen, alwaysExpire: true});

...

function OfficeOpen() {
    $('#officeCountdown').countdown('option', {until: officeCloses, onExpiry: OfficeClose, alwaysExpire: true});
}

function OfficeClose() {
    alert('Office has closed')
}

第一部分 - 倒计时直到officeOpen似乎有效。

然而,第二部分 - 倒计时直到OfficeClose没有 - 它似乎总是开始倒数OfficeOpens和officeCloses之间的差异,而不是使用当前时间 - 而且,OfficeCLose似乎永远不会触发。< / p>

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我建议您使用优秀的Datejs插件来创建/处理日期 (阅读getting-starteddocs,因为它非常广泛

这样你可以做到

$('#fooCountdownA').countdown({
    until: Date.today.set({hour:7}) 
});
$('#fooCountdownB').countdown({
    until: Date.today.set({hour:9}) 
});
$('#fooCountdownC').countdown({
    until: Date.today.set({hour:11}) 
});

至于倒计时,插件似乎对重新使用倒计时不友好.. 也许你最好创建虚拟元素并将它们插入到dom中以保持倒计时,并在到期时销毁它们。