【问题标题】:counter need persist to remember the last number计数器需要坚持记住最后一个数字
【发布时间】:2016-05-26 20:04:06
【问题描述】:

我找到了这个小提琴: https://jsfiddle.net/DinoMyte/sac63azn/3/

https://fiddle.jshell.net/DinoMyte/sac63azn/3/show/

var num = 10000000;

setInterval(function()
  {   
    num++;
    console.log(num);
    $('div').text(num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","));
  },6000);

它几乎按照我想要的方式工作。这是一个计数器,每 6 秒,它会在数字上加一个 1。例如:数字从 10,000,000 开始,然后每隔 6 秒,它会在数字上加 1。问题是当用户刷新或重新加载页面时,这个数字会恢复到原来的 10,000,000。如果刷新或重新加载后,是否有可能从上次保存数字?坚持?例如:数字现在是 10,000,008,6 秒后是 10,000,009,然后用户点击离开或刷新或重新加载页面,它应该记住最后一个数字在哪里留下:10,000,009 并从那里开始计数。

【问题讨论】:

  • 将其写入 cookie。重新加载时,首先查看 cookie 是否存在并将num 设置为该值而不是 10000000
  • 如果它是一个重要的数字,你应该使用服务器端语言,如果不是,会话变量会为你做。

标签: javascript counter persist


【解决方案1】:

您可以为此使用localStorage

只需使用此代码

var num = localStorage.getItem('evaluatedTimer') || 10000000;

setInterval(function()
  {   
    num++;
    console.log(num);
    var currentTimer = num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    localStorage.setItem('evaluatedTimer', currentTimer');
    $('div').text(currentTimer );
  },6000);

【讨论】:

  • 对不起各位。我还没有完成代码检查,所以在实现时你可能需要再运行一次。
  • 我试过你的代码。它没有用。我做对了吗? test06.bycustomdesign.com/03.html
【解决方案2】:

您可以将 var num 值设置为 javascript cookie。您可以使用以下 javascript 代码来创建、读取或删除 cookie val

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    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,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

因此,在您的情况下,您可以像这样保留 num 值

变量数 = 10000000;

setInterval(function()
  {   
    num++;
    createCookie('persist_num', num, 1);
    console.log(readCookie('persist_num'));
    $('div').text(num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","));
  },600);

【讨论】:

  • 我试过你的代码,它没有工作。我错过了什么? test06.bycustomdesign.com/04.html
  • 它应该可以工作,因为我之前已经测试过了。您可能缺少类似 var num = 100000000;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 2012-10-07
  • 1970-01-01
  • 2019-07-12
  • 1970-01-01
  • 2018-08-02
  • 2011-04-28
相关资源
最近更新 更多