Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript定时器提前跳转_Javascript_Jquery - Fatal编程技术网

JavaScript定时器提前跳转

JavaScript定时器提前跳转,javascript,jquery,Javascript,Jquery,大家好,请检查这个代码,第一部分来自innit,第二部分是我的定时器功能。非常感谢 我设置了一个15分钟的计时器。在cookies中保存时间,并在init上读取保存的时间 var cc=readCookie("agreement"); var ct=readCookie("secondsleft"); if (ct == null || ct == '') { secondsleft = 15*60; } else { secondsleft = parseInt(ct); }

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

我设置了一个15分钟的计时器。在cookies中保存时间,并在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);
    }
}
函数bingoTimer(){
第二步--;
如果(秒英尺<0){
}否则{
var minLeft=parseInt(secondsleft/60);
var secLeft=secondsleft-minLeft*60;
var timeLeft=“+minLeft+”:“+secLeft;
var timeCookie=createCookie(“secondsleft”,timeLeft);
$('#timer').html(timeLeft);
}
}

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

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

这里正在工作

你的问题是:

var timeCookie = createCookie("secondsleft", timeLeft);
timelLeft是一个字符串(“14:59”),所以在解析int之后,它被转换为14,-1,得到“0:13”。您需要以秒为单位输入值:

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

太棒了,谢谢!好的开始!