即使在onload之后,保持先前jquery全局变量的值保持不变

时间:2013-01-17 09:16:12

标签: javascript jquery

  

可能重复:
  Javascript global variable does not persist when navigate to another page (which also uses same js file)

我有一个脚本

<script>

var pn=0;

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

首次执行set后,pn将为1。

重新加载页面后,pn保留其值1,以便在下次执行set时,它会增加到2

如何在页面重新加载中保留全局变量?

5 个答案:

答案 0 :(得分:3)

您可以通过jquery cookie将pn的值保存到Cookie中。设置cookie:

$.cookie("pn", pn);

从cookie中获取价值:

$.cookie("pn");

答案 1 :(得分:2)

简而言之,你不能。没有办法在页面重新加载时保留客户端变量。

我建议使用

jQuery cookie plugin(cookies)

或者如果您的浏览器支持HTML5:

HTML5 web storage(本地/会话存储)

答案 2 :(得分:1)

你应该使用cookies,这是一个如何实现它的例子:

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

答案 3 :(得分:0)

您应该将您的值存储在cookie,查询字符串或hashfragment中,然后在页面加载时获取值。

答案 4 :(得分:0)

我建议使用jquery cookie plugin。这很简单,可以解决你的问题