2016-02-20 33 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); 
    
    } 
    
    相關問題