douduan2272 2016-05-02 10:13
浏览 156

使用LocalStorage保存数据

I am trying to use LocalStorage to save data. I want to use this data to reinitialise a counter after the user refreshes. An example of my code can be found in the following JSFiddle.

var hj= document.getElementById("jam");
var mm= document.getElementById("menit");
var ds= document.getElementById("detik");


var startDateTime = new Date();
var startStamp = startDateTime.getTime();
console.log(startDateTime);
console.log(startStamp);
var newDate = new Date();
var newStamp = newDate.getTime();
// console.log(newStamp);
var timer;

function pad(val) {
    return val > 9 ? val : "0" + val;
}

function updateClock() {
    newDate = new Date();
    newStamp = newDate.getTime();
    var diff = Math.round((newStamp-startStamp)/1000);

    var d = Math.floor(diff/(24*60*60));
    diff = diff-(d*24*60*60);
    var h = Math.floor(diff/(60*60));
    diff = diff-(h*60*60);
    var m = Math.floor(diff/(60));
    diff = diff-(m*60);
    var s = diff;




    // document.getElementById("time-elapsed").innerHTML = d+" day(s), "+h+" hour(s), "+m+" minute(s), "+s+" second(s) working";
    document.getElementById("jam").innerHTML=pad(h);
    document.getElementById("menit").innerHTML=pad(m);
    document.getElementById("detik").innerHTML=pad(s);

}

var time=setInterval(updateClock, 1000);

https://jsfiddle.net/o5s4y2L7/

  • 写回答

1条回答 默认 最新

  • dongyi1490 2016-05-02 11:04
    关注

    You can use a Cookie for this.

    var hj= document.getElementById("jam");
    var mm= document.getElementById("menit");
    var ds= document.getElementById("detik");
    
    
    var startDateTime = new Date();
    var cookie_time = getCookie("timer_start");
    var startStamp = cookie_time?cookie_time:startDateTime.getTime();
    setCookie("timer_start", startStamp, 1);
    var newDate = new Date();
    var newStamp = newDate.getTime();
    var timer;
    
    function pad(val) {
        return val > 9 ? val : "0" + val;
    }
    
    function updateClock() {
        newDate = new Date();
        newStamp = newDate.getTime();
          var diff = Math.round((newStamp-startStamp)/1000);
    
        var d = Math.floor(diff/(24*60*60));
        diff = diff-(d*24*60*60);
        var h = Math.floor(diff/(60*60));
        diff = diff-(h*60*60);
        var m = Math.floor(diff/(60));
        diff = diff-(m*60);
        var s = diff;
    
    
    
    
        document.getElementById("jam").innerHTML=pad(h);
        document.getElementById("menit").innerHTML=pad(m);
        document.getElementById("detik").innerHTML=pad(s);
    
    }
    
    function setCookie(cname, cvalue, exdays) {
        var d = new Date();
        d.setTime(d.getTime() + (exdays*24*60*60*1000));
        var expires = "expires="+ d.toUTCString();
        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 "";
    } 
    var time=setInterval(updateClock, 1000);
    
    评论

报告相同问题?

悬赏问题

  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源