1

我正在使用 jquery 倒计时来倒计时到特定的日期和时间。当计数器到期时,我希望计数器被销毁,以当前时间加上 10 分钟和新的到期功能重新启动。

但由于某种原因,当我的第一个计时器用完时,第二个计时器的到期功能被执行,10 分钟倒计时开始。

我已经尝试了几种组合,包括“选项”、移动函数……但我不能让它工作,所以最后一个函数(一个简单的控制台日志)被称为最终到期函数。

这是我的代码:

var select = new Date(data.select);  //date from server

$('#counter').countdown({
    until: select,
    format: 'dhms',
    layout: ' ({h<}{hn} timer {h>}{m<}{mnn} minutter {m>}{s<}{snn} sekunder{s>})',
    onExpiry: onCounter
});

function onCounter() {
    $('#counter').countdown('destroy');
    $('#counter').countdown({
        until: '+10m',
        format: 'ms',
        layout: ' ({m<}{mnn} minutter {m>}{s<}{snn} sekunder{s>})',
        onExpiry: console.log('times up') // last function to be called
    });
}
4

1 回答 1

2

onCounter onExpiry不是一个函数,所以会立即执行而不是在到期时执行:

function onCounter() {
    $('#counter').countdown('destroy');
    $('#counter').countdown({
        until: '+10m',
        format: 'ms',
        layout: ' ({m<}{mnn} minutter {m>}{s<}{snn} sekunder{s>})',
        onExpiry: function() { console.log('times up'); } 
    });
}

或者你可以创建一个新函数并调用它,就像你对第一个函数一样:

function onFinalCounter() {
    console.log("times up");
}

function onCounter() {
    $('#counter').countdown('destroy');
    $('#counter').countdown({
        until: '+10m',
        format: 'ms',
        layout: ' ({m<}{mnn} minutter {m>}{s<}{snn} sekunder{s>})',
        onExpiry: onFinalCounter
    });
}
于 2015-12-02T16:11:11.260 回答