保持前一个jquery全局变量的值不变,即使在加载之后也是如此

keeping value of previous jquery global variable intact, even after onload

本文关键字:加载 之后 全局变量 jquery 一个      更新时间:2023-09-26

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

我有一个脚本

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

在第一次执行set之后,pn将为1。

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

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

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

$.cookie("pn", pn);

从cookie中获取价值:

$.cookie("pn");

简而言之,你做不到。没有办法在页面重新加载时持久化客户端变量。

我建议使用

jQuery cookie插件(cookie(

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

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

您应该使用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

您应该将值存储在cookie、querystring或hashfragment中,然后在页面加载时获取值。

我建议使用jquery cookie插件。它相当简单,可以解决您的问题