2013-01-17 17 views
0

可能重複:
Javascript global variable does not persist when navigate to another page (which also uses same js file)維持值前一個jQuery的全局變量不變,甚至onload事件後

我有一個腳本

<script> 

var pn=0; 

function set() 
{ 
pn=parseInt(pn)+1; 
} 
</script> 

set第一次執行後,pn將爲1.

頁面重新加載後,pn保留其值1,所以在下一次執行set時,它將遞增到2

如何在頁面重新加載時保留全局變量?

+0

是否要將此值存儲在多個用戶或每個用戶? –

回答

2

總之,你不能。沒有辦法在頁面重新加載時保留客戶端變量。

我會建議使用兩種

jQuery cookie plugin(餅乾)

或者如果你的瀏覽器支持HTML5:

HTML5 web storage(局地/會話存儲)

+1

localStorage比餅乾更好..至少在我看來...更易於使用 –

+0

@KatCox只要瀏覽器支持它,並且數據僅用於客戶端 - 是的:) – Johan

0

,可以儲存在你的價值一個cookie,querystring或hashfragment,然後在頁面加載時獲取該值。

1

你應該使用cookie,這裏有一個例子,你如何能夠實現它:從餅乾

$.cookie("pn", pn); 

獲得價值

var pn = 0; 

function increment() { 
    pn = parseInt(pn, 10) + 1; 
    setCookie('pn', pn, 200); 
    console.log(pn); 
} 

function setCookie(c_name,value,exdays) { 
    var exdate=new Date(); 
    exdate.setDate(exdate.getDate() + exdays); 
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); 
    document.cookie=c_name + "=" + c_value; 
} 

function getCookie(c_name) { 
    var i,x,y,ARRcookies=document.cookie.split(";"); 
    for (i=0;i<ARRcookies.length;i++) { 
    x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
    y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
    x=x.replace(/^\s+|\s+$/g,""); 
    if (x==c_name) { 
     return unescape(y); 
    } 
    } 
} 

(function() { 
    pn = getCookie('pn') || 0; 
}()); 

下面是一個例子:http://jsbin.com/ucitul/3