2

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

<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)

我试图解决这个问题,但它没有给我带来任何好处。是否可以以某种方式编辑我的脚本来修复这个错误?

4

5 回答 5

1

数字前面没有零。

您必须手动添加它。

if(seconds < 10) {
    second_text = "0" + seconds;
}
于 2012-12-27T20:00:14.307 回答
1
second_text = (seconds > 9) ? (seconds) : ('0' + seconds);
于 2012-12-27T20:01:19.083 回答
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);
}
于 2012-12-27T20:03:59.173 回答
0

尝试添加一个函数来填充显示的值

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

在这里调用

el.innerHTML = minute_text + '' + padvalue(seconds) + ' ' + second_text + ' remaining';
于 2012-12-27T20:02:36.710 回答
0

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

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

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

(您确实知道,间隔 1000 意味着间隔将是 1000 或更多毫秒?尽管间隔那么长,但您不太可能错过整个滴答声。这意味着计数器将接近实时秒数但不准确并且会随着时间和计算机的不同而变化。)

于 2012-12-27T20:03:23.687 回答