向Javascript计时器添加前导零

向Javascript计时器添加前导零,javascript,timer,countdown,Javascript,Timer,Countdown,我试图将前导零添加到秒值,但我一直遇到错误。我已经尝试了许多在这里发布的选择解决方案,但似乎无法使其发挥作用 我从跨度中提取值,因为这些值来自数据库 var timer = $('.timer'); $('.prev-button,.next-button').hide(); setInterval(function () { var m = $('.min', timer), s = $('.sec', timer); if (m.length == 0

我试图将前导零添加到秒值,但我一直遇到错误。我已经尝试了许多在这里发布的选择解决方案,但似乎无法使其发挥作用

我从跨度中提取值,因为这些值来自数据库

var timer = $('.timer');

$('.prev-button,.next-button').hide();

setInterval(function () {

    var m = $('.min', timer),
        s = $('.sec', timer);

    if (m.length == 0 && parseInt(s.html()) <= 0) {
        timer.html('Proceed to the Next Slide');
        $('.prev-button,.next-button').fadeIn();
    }

    if (parseInt(s.html()) <= 0) {
        m.html(parseInt(m.html() - 1));
        s.html(60);
    }

    if (parseInt(s.html()) < 10) {

        $('.sec').prepend(0)

    }


    if (parseInt(m.html()) <= 0) {

        timer.html('Time remaining for this slide - <span class="sec">59</span> seconds')

    }

    s.html(parseInt(s.html() -1));

}, 1000);
var timer=$('.timer');
$('.prev按钮,.next按钮').hide();
setInterval(函数(){
变量m=$('.min',计时器),
s=$('秒',计时器);
如果(m.length==0&&parseInt(s.html())可以这样尝试:

if (parseInt(s.html()) < 10) {

        $('.sec').val('0' + $('.sec').val());

    }
if(parseInt(s.html())<10){
$('.sec').val('0'+$('.sec').val());
}

您需要将值视为
字符串,而不是
int
。JavaScript在将看起来像数字的东西转换为数字方面非常积极,这就是这里发生的事情。

我修改了您的小提琴使其工作

您应该将时间存储在javascript int vars中,而不是每次都从html元素中读取时间。这会导致在将逻辑附加到html文档布局时出现可维护性问题


我没有修复您的所有代码,但我创建了两个变量,用于执行计算。

两件事:最好注册一个开始时间,并与interval函数中的开始时间进行比较。计时器不能保证精确,但会在指定的时间间隔时或之后触发。如果计算机正忙,计时器可能会迟到

另外,如果您使用的是
parseInt
,请始终指定一个基数参数(以数字为基数)。否则,字符串“08”将被解析为“0”,因为前导零被解释为八进制(以8为基数)。因此,请使用
parseInt(字符串,10)
解析为一个正常的以10为基数的数字

至于添加前导零,我认为您应该保留一对变量,总时间为秒,而不是一直读取/写入元素

var持续时间、开始时间、间隔;
持续时间=parseInt($(“.min”).text(),10)*60+parseInt($(“.sec”).text(),10);
startTime=(新日期()).getTime();
函数倒计时(){
已用var,剩余,m,s;
已用=((新日期()).getTime()-startTime)/1000;
剩余=持续时间-已过;

当我使用typeof()确定解析的内容时,我慢慢意识到了这一点。谢谢
var duration, startTime, interval;

duration = parseInt($(".min").text(), 10) * 60 + parseInt($(".sec").text(), 10);
startTime = (new Date()).getTime();

function countDown() {
    var elapsed, remaining, m, s;
    elapsed = ((new Date()).getTime() - startTime) / 1000;
    remaining = duration - elapsed;

    if(remaining <= 0) {
        clearInterval(interval);
        $(".timer").text('Proceed to the Next Slide');
        $('.prev-button,.next-button').fadeIn();
    } else {
        m = String(Math.round(remaining / 60));
        s = String(Math.round(remaining % 60));
        if( s < 10 ) {
            s = "0" + s;
        }
        $(".min").text(m);
        $(".sec").text(s);
    }
}

interval = setInterval(countDown, 500);