JavaScript计时器向前跳

时间:2012-10-16 04:18:22

标签: javascript jquery

大家好请检查这段代码,第一部分来自innit,第二部分是我的计时器功能。非常感谢!

我设置了15分钟的计时器。节省cookie并在init上读取已保存的时间

var cc=readCookie("agreement");
var ct=readCookie("secondsleft");

if (ct == null || ct == '') {
    secondsleft = 15*60;
} else {
    secondsleft = parseInt(ct);
}

myInterval = setInterval(bingoTimer,1000);

任何人都能看到为什么刷新后这段代码会跳到0:13?

function bingoTimer() {
    secondsleft--;

    if (secondsleft < 0) {

    } else {
        var minLeft = parseInt(secondsleft / 60);
        var secLeft = secondsleft - minLeft * 60;
        var timeLeft = " " + minLeft+":" + secLeft;
        var timeCookie = createCookie("secondsleft", timeLeft);
        $('#timer').html(timeLeft);
    }
}

2 个答案:

答案 0 :(得分:1)

我相信parseInt会解析它在字符串中可以找到的第一个整数值。在您的示例中,您可以使用以下格式保存时间:“minLeft:secLeft”。我认为parseInt只会解析minLeft部分并忽略':'之后的其余字符串。因此,你的13分钟和秒秒被解析为13秒,在secondsleft = parseInt(ct);

尝试将createCookie(“secondsleft”,timeLeft)更改为createCookie(“secondsleft”,secondsleft.toString())。

答案 1 :(得分:0)

这是有效的fiddle

你的问题是:

var timeCookie = createCookie("secondsleft", timeLeft);

timelLeft是一个字符串(“14:59”),所以在解析int之后它被转换为14,而-1则得到了“0:13”。你需要在几秒钟内设置值:

var timeCookie = createCookie("secondsleft", secondsleft);