0

可能重复:
导航到另一个页面(也使用相同的 js 文件)时,Javascript 全局变量不会持续存在

我有一个脚本

<script>

var pn=0;

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

在第一次执行后setpn将是 1。

页面重新加载后,pn保留其值1so ,下次执行set时将递增到2

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

4

5 回答 5

3

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

$.cookie("pn", pn);

从 cookie 中获取价值:

$.cookie("pn");
于 2013-01-17T09:21:27.907 回答
2

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

我建议使用

jQuery cookie 插件(cookies)

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

HTML5 网络存储(本地/会话存储)

于 2013-01-17T09:20:35.560 回答
1

您应该使用 cookie,这是一个如何实现它的示例:

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

于 2013-01-17T09:21:56.167 回答
0

您应该将值存储在 cookie、查询字符串或哈希片段中,然后在页面加载时获取值。

于 2013-01-17T09:20:57.833 回答
0

我建议使用jquery cookie 插件。这很简单,将解决您的问题

于 2013-01-17T09:21:02.857 回答