一分钟的带有cookie的JavaScript倒数计时器将在1分钟后停止

嗅探器

我有这个倒数计时器。由于某种原因,它在一分钟后停止计数-只是停止了。如果我计数55分钟,它将在54:00停止,如果我计数2分钟,它将在1:00停止。

这是JSFiddle链接:带有cookie的倒数计时器

和JS代码:

function countdown(minutes) {
var seconds = 60;
var mins = minutes;

if(getCookie("minutes")&&getCookie("seconds"))
{
     var seconds = getCookie("seconds");
     var mins = getCookie("minutes");
}

function tick() {

    var counter = document.getElementById("timer");
    setCookie("minutes",mins,10)
    setCookie("seconds",seconds,10)
    var current_minutes = mins-1
    seconds--;
    counter.innerHTML = 
    current_minutes.toString() + ":" + (seconds < 10 ? "0" : "") + String(seconds);
    //save the time in cookie



    if( seconds > 0 ) {
        setTimeout(tick, 1000);
    } else {

            if(mins > 1){

               // countdown(mins-1);   never reach “00″ issue solved:Contributed by Victor Streithorst    
               setTimeout(function () { countdown(mins - 1); }, 1000);

            }
        }
    }
    tick();
}
function setCookie(cname,cvalue,exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires=" + d.toGMTString();
    document.cookie = cname+"="+cvalue+"; "+expires;
}
 function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}
countdown(55);
阿克萨克

我不知道您为什么在这里使用Cookie,但撇开这些,您的问题似乎出在以下几行:

var seconds = getCookie("seconds");
var mins = getCookie("minutes");

在第一分钟结束后的代码中,您只需不到一分钟即可再次调用倒数计时功能。但是,上面的几行将分钟变量返回到其先前的值。因此,经过一分钟后,您最终在同一分钟内陷入困境。

因此,我假设您只需从Cookie中获取一次时间(第一次运行倒计时)。您可以使用如下所示的内容:

var firstTime = true;

function countdown(minutes) {
    var seconds = 60;
    var mins = minutes;

    if(firstTime && getCookie("minutes")&&getCookie("seconds"))
    {
        firstTime = false;
        seconds = getCookie("seconds");
        mins = getCookie("minutes");
    }
    ...

请注意,var在if子句中是不必要的,因为您已经定义了secondsmins变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在JavaScript记忆辅助游戏中设置一分钟计时器

来自分类Dev

使用Yammer指标计时器获得一分钟的费率

来自分类Dev

1分钟后,JavaScript计时器秒数增加一倍

来自分类Dev

一分钟后无法上网

来自分类Dev

一分钟后无法停止串流播放

来自分类Dev

一分钟后,SQL Server 2005复制将停止并且没有错误

来自分类Dev

一分钟后,SQL Server 2005复制将停止并且没有错误

来自分类Dev

Javascript-提交后一分钟内无法提交的表单

来自分类Dev

启动后一分钟,Spark会释放所有执行程序

来自分类Dev

可以在 Xamarin 的计时器中使用百分之一分钟。形式

来自分类Dev

如何添加5分钟的JavaScript倒数计时器来提交表单

来自分类Dev

bash一分钟到5分钟

来自分类Dev

从最后一分钟开始活动(PHP)

来自分类Dev

给字符串加一分钟

来自分类Dev

DateTime.TryParseExact增加一分钟?

来自分类Dev

DateTime.TryParseExact增加一分钟?

来自分类Dev

一分钟。字典中的值

来自分类Dev

运行Cron不到一分钟-Laravel

来自分类Dev

WordPress网站加载将近一分钟

来自分类Dev

Ubuntu 需要一分钟才能启动

来自分类Dev

计时器在45分钟后不会停止

来自分类Dev

Java的挂起一分钟后,一个程序完成

来自分类Dev

MyEclipse 打开一分钟后一直崩溃

来自分类Dev

一分钟后,Gorilla WebSocket断开连接

来自分类Dev

调用将来后,leiningen run一分钟未返回

来自分类Dev

一分钟后Cloud Run / Gunicorn出现502错误

来自分类Dev

引导一分钟后,Arch Linux运行脚本

来自分类Dev

重启一分钟后如何执行系统命令(Linux)?

来自分类Dev

一分钟后在较新的Linux操作系统中黑屏