带有jquery的全局变量

带有jquery的全局变量,jquery,global-variables,Jquery,Global Variables,我有一个js文件test.js,其中包含一个全局变量global\u var,还有一个函数fn1(),用于更改变量global\u var: var global_var="initial_value"; function fn1(){ global_var="Value1"; alert("global_var="+global_var); } 然后我从我的page1.html执行fn1(),它将我发送到page2.html: <li><a href="pa

我有一个js文件test.js,其中包含一个全局变量
global\u var
,还有一个函数
fn1()
,用于更改变量
global\u var

var global_var="initial_value";
function fn1(){
    global_var="Value1";
    alert("global_var="+global_var);
}
然后我从我的page1.html执行
fn1()
,它将我发送到page2.html:

<li><a href="page2.html" onclick='fn1();'></a></li>//this returns "global_var=Value1"

您不调用第2页中的函数。每次加载到其他页面时,JS都会重置。。。将其保存在会话中或本地,例如,如果您希望保持其活动状态

每次加载新页面时,JavaScript都会重新初始化,因此对变量的任何更改都会丢失。您可以将该值保存在cookie中,并在第2页中检索该值

第1页

第2页

<script src="test.js"></script>
<script>
   $('#mypage').live('pageshow', function(event) {
   var global_var = $.cookie('global_var');
   alert(global_var); //this returns "initial_value"!!! 
});

</script>

$('#mypage').live('pageshow',函数(事件){
var global_var=$.cookie('global_var');
警报(全局变量);//返回“初始值”!!!
});
这需要这个插件,浏览器上JavaScript中的“全局”变量实际上是页面范围的变量。只要创建它们的
窗口
对象存在,它们就存在(因为所有全局变量都是
窗口
的属性)。更改页面时,旧的
窗口
对象将被销毁,并创建一个新的对象,因此变量不再存在

要在页面之间保留信息,请考虑:

  • 用饼干
  • 使用HTML5“本地存储”(请注意,IE7和更早版本没有这种功能,但某些移动浏览器可能没有)
  • 使用服务器端状态(但这不能很好地扩展)

如果只是两页的问题,您可以使用简单的查询字符串

第1页

var k="initial_value";
function fn1(){
  k="Value1";
  //  alert("k="+k);
  location.href='page2.html?k='+k;
}
第2页

function querystring(key) {
   var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi');
   var r=[], m;
   while ((m=re.exec(document.location.search)) != null) r.push(m[1]);
   return r;
}

<script>
   $('#mypage').live('pageshow', function(event) {
   alert(querystring('k'));  
});
函数查询字符串(键){
var re=new RegExp('(?:\?|&')+key+'=(.*?(=&$)','gi');
var r=[],m;
while((m=re.exec(document.location.search))!=null)r.push(m[1]);
返回r;
}
$('#mypage').live('pageshow',函数(事件){
警报(查询字符串('k'));
});

/JavaScript执行上下文/状态不在页面之间共享。考虑使用会话或本地存储,该状态不会保存在新的页面加载。您需要将KE存储在cookie中,或者将其传递到Page 2.HTML的URL,然后从Page 2.HTMLURL上读取它。JavaScript变量范围存在,直到您重新加载页面或离开。如果需要在其他页面上保留值,请使用服务器端语言并将变量附加到URL,如
page2.php?k=Value1
脚本在哪里?在第1页或第2页或单独的js中?
var k="initial_value";
function fn1(){
  k="Value1";
  //  alert("k="+k);
  location.href='page2.html?k='+k;
}
function querystring(key) {
   var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi');
   var r=[], m;
   while ((m=re.exec(document.location.search)) != null) r.push(m[1]);
   return r;
}

<script>
   $('#mypage').live('pageshow', function(event) {
   alert(querystring('k'));  
});