Javascript倒计时故障

时间:2017-05-11 14:16:40

标签: javascript jquery

我正在尝试将此默认秒计时器更改为Seconds倒计时计时器,但它无法正常工作

这是我正在尝试编辑的脚本

https://codepen.io/martingrand/pen/pqxtc

这是我制作的剧本

https://codepen.io/anon/pen/mmXbZR

有谁能告诉我我做错了什么?

我的jquery

var sec = 155;
calcValues();
var intvel = setInterval(calcValues, 1000);

function calcValues() {
    $('.counter .to')
        .addClass('hide')
        .removeClass('to')
        .addClass('from')
        .removeClass('hide')
        .addClass('n')
        .find('span:not(.shadow)').each(function (i, el) {
        $(el).text(getSec(true));
    });
    $('.counter .from:not(.n)')
        .addClass('hide')
        .addClass('to')
        .removeClass('from')
        .removeClass('hide')
    .find('span:not(.shadow)').each(function (i, el) {
        $(el).text(getSec(false));
    });
    $('.counter .n').removeClass('n');
}

function getSec(next) {
    var d = new Date();
    if (next) {
        sec--;
        if (sec == 0) {
            clearInterval(intvel);
        }
    } else if(sec == 60) {
        sec = 0;
    }

    return (sec == 10 ? '0' + sec : sec);
}

1 个答案:

答案 0 :(得分:0)

这里的逻辑是错误的

return (sec == 10 ? '0' + sec : sec);

你是说秒数等于10,而不是加零。它应该小于10。

return (sec < 10 ? '0' + sec : sec);

现在针对这个问题,似乎两次调用你的getSeconds是你的问题。所以不要再调用两次,而是一次。

function calcValues() {

    var secs = getSec(true);  //store it
    $('.counter .to')
        .addClass('hide')
        .removeClass('to')
        .addClass('from')
        .removeClass('hide')
        .addClass('n')
        .find('span:not(.shadow)').each(function (i, el) {
        $(el).text(secs);  //use it
    });
    $('.counter .from:not(.n)')
        .addClass('hide')
        .addClass('to')
        .removeClass('from')
        .removeClass('hide')
    .find('span:not(.shadow)').each(function (i, el) {
        $(el).text(secs);  //use it
    });
    $('.counter .n').removeClass('n');
}