2016-02-20 35 views
0

在下面的代码中,即使在我重新加载页面时,我也想节省计时时间。保存为静态的变量是“diff”。因为我需要我的计时器才能将我重定向到同一页面时保存的las时间还给我。此代码在标题部分中声明。这段代码并没有这样做,我将如何实现这一目标? `如何使用Javascript保存静态变量,即使刷新页面

<script language="JavaScript">enter code here 

var startTime = 0 
var start = 0 
var end = 0 
var diff = 0 
var timerID = 0 
function chrono(){ 
    end = new Date() 
    diff = end - start 
    diff = new Date(diff) 
    var msec = diff.getMilliseconds() 
    var sec = diff.getSeconds() 
    var min = diff.getMinutes() 
    var hr = diff.getHours()-1 
    if (min &lt; 10){ 
     min = "0" + min 
    } 
    if (sec &lt; 10){ 
     sec = "0" + sec 
    } 
    if(msec &lt; 10){ 
     msec = "00" +msec 
    } 
    else if(msec &lt; 100){ 
     msec = "0" +msec 
    } 
    //alert(document.getElementById("chronotime").innerText); 
/* document.getElementById("pps").innerHTML = hr + ":" + min + ":" + sec + ":" + msec 

    document.getElementById("ppa").innerHTML = hr + ":" + min + ":" + sec + ":" + msec */ 

    document.getElementById("chronotime").innerHTML = hr + ":" + min + ":" + sec + ":" + msec 
    timerID = setTimeout("chrono()", 10) 
} 
function chronoStart(){ 

    start = new Date() 
    chrono() 
} 
function chronoContinue(){ 

    start = new Date()-diff 
    start = new Date(start) 
    chrono() 
} 
function chronoReset(){ 
    document.getElementById("chronotime").innerHTML = "0:00:00:000" 
    start = new Date() 
} 
function chronoStopReset(){ 
    document.getElementById("chronotime").innerHTML = "0:00:00:000" 
    document.chronoForm.startstop.onclick = chronoStart 
} 
function chronoStop(){ 
    document.chronoForm.startstop.value = "start!" 
    document.chronoForm.startstop.onclick = chronoContinue 
    document.chronoForm.reset.onclick = chronoStopReset 
    clearTimeout(timerID) 
} 



</script> 

+0

这是如何的Java? – fge

+0

jee,这段代码在模板头 –

回答

0

在页面的范围内,没有办法让页面重新加载时存在变量。您可以尝试浏览器存储,但这是有风险的(用户可能会在同一页面打开多个窗口/标签,导致混淆)。

顶端的选项是保持在用户会话的上下文在服务器上的最新信息(存储定时器开始日期收到第一个请求时)。
在用户的会话中,您将能够检测到用户的计时器在随后的调用中已经启动。

该选项还使您摆脱连接到多个标签潜在的问题(虽然不是多个/不同的浏览器)

2

你不能把一个变量活着刷新后的变量在窗口,这将刷新后得到重新加载创建。

var a = 10; 
//You can access this variable as below 
console.log(a);//1st way 
console.log(window.a);//2nd Way 

所以当页面被刷新时,窗口被重新加载。

试图挽救你的变量在cookie的形式(旧的传统方式)

document.cookie="key=value; key=value....." 

其他选项存在有:(比较新的。)

    在浏览器的 “HTML5的Web SQL数据库”
  1. Reference)。

但前一段时间,我测试,它不工作在FF。

  • 本地存储。下面是语法:

    localStorage.setItem( “开始”, “10”);

  • 上面讨论的选项是针对客户端的。该值也可以保存在服务器端。

    0

    尝试使用本地存储,这将帮助您保存价值并将其重新载入页面重新加载。

    http://www.w3schools.com/html/html5_webstorage.asp

    +0

    当我重新加载本地存储项返回0 ... –

    +0

    在页面刷新之前,您需要将数据添加到您的本地存储,然后在页面重新加载后检索它。 // –

    0

    您可以使用浏览器的localStorage实现此操作。由于JavaScript不能跨域使用,您应该使用本地存储或一些后端来实现此功能。

    然而,当您使用本地存储,用户可以打开它的控制台,并可以使用命令,localStorage.clear()清除所有浏览器的存储,所以后者的选择是更可靠。

    0
    // Set value 
    localStorage.setItem(saveDiff, diff); 
    
    
    window.onload = function() { 
        //retrieve value back after page load 
        var saveDiff = localStorage.getItem(differenceValue); 
    
    } 
    
    相关问题