0

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

我设置了一个 15 分钟的计时器。在 cookie 中保存时间并在初始化时读取保存的时间

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);
    }
}
4

2 回答 2

1

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

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

于 2012-10-16T04:41:08.790 回答
0

这是工作小提琴

你的问题是:

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

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

var timeCookie = createCookie("secondsleft", secondsleft);
于 2012-10-16T05:12:03.730 回答