如何修复javascript倒计时秒bug

时间:2012-12-27 19:56:47

标签: javascript html

所以我创建了这个倒计时器,

<script type="text/javascript">
var interval;
    var minutes = 12;
    var seconds = 32;
    window.onload = function() {
        countdown('countdown');
}

function countdown(element) {
    interval = setInterval(function() {
        var el = document.getElementById(element);
        if(seconds == 0) {
            if(minutes == 0) {               
                minutes=7;
seconds=47;
                } else {
                    minutes--;
                    seconds = 60;
                }
            }
            if(minutes > 0) {
                var minute_text = minutes + (minutes > 1 ? ':' : ':');
            } else {
                var minute_text = '';
            }
            var second_text = seconds > 1 ?'':'';
            el.innerHTML = minute_text + ''+seconds + ' '+second_text + ' remaining';
            seconds--;
        }, 1000);

}
</script> 

结果完美无缺,但当计时器达到10以下的数字时(12:03,12:05等),它会显示前面没有“0”的秒数。 (12:3而不是12:03)

我试着解决这个问题,但它让我无处可去。有可能以某种方式编辑我的脚本来修复这个错误吗?

5 个答案:

答案 0 :(得分:1)

数字前面没有零。

您必须手动添加。

if(seconds < 10) {
    second_text = "0" + seconds;
}

答案 1 :(得分:1)

second_text = (seconds > 9) ? (seconds) : ('0' + seconds);

答案 2 :(得分:1)

我刚刚清理了你的代码:

var interval,
    minutes = 12,
    seconds = 32;

window.onload = function() {
    countdown('countdown');
}

function countdown(element) {
    var el = document.getElementById(element),
        minutes_text, second_text;

    interval = setInterval(function() {
        if(seconds == 0) {
            if(minutes == 0) {
                minutes=7;
                seconds=47;
            }
            else {
                minutes--;
                seconds = 60;
            }
        }

        minutes_text = minutes;
        second_text = (seconds < 10 ? "0" : "") + seconds;

        el.innerHTML = minutes_text + ':' + second_text + ' remaining';
        seconds--;
    }, 1000);
}

答案 3 :(得分:0)

尝试添加一个功能来填充显示的值

function padvalue(i) {
    if (i<10) {
        i="0" + String(i);
    }
    return i;
}

在此处致电

el.innerHTML = minute_text + '' + padvalue(seconds) + ' ' + second_text + ' remaining';

答案 4 :(得分:0)

使用此代码段将数字转换为字符串:

var secondStr = seconds + "";
while (secondStr.length < 2) {
    secondStr = "0" + secondStr;
}

在几分钟和几小时内做同样的事情,然后打印字符串。

(你知道间隔1000意味着间隔将是1000或更多毫秒吗?虽然间隔时间很长,但你不可能错过一个完整的节拍。这意味着计数器将接近实时秒但不准确,会随着计算机的不同而变化。)