JavaScript中具有多个文件的全局变量

JavaScript中具有多个文件的全局变量,javascript,global-variables,Javascript,Global Variables,我有一个名为index.php的文件。通过脚本标记,它引用index.js 我还有一个名为payment.php的文件。通过脚本标记,它引用payment.js 我需要在index.js中设置一个名为seatSelected的变量,然后在payment.js中使用它。但是,我不想在payment.php中引用index.js 我尝试创建一个名为globals.js的文件,在index.js之前的index.php中引用它,其中包含以下内容: var selectedSeat; function

我有一个名为index.php的文件。通过脚本标记,它引用index.js

我还有一个名为payment.php的文件。通过脚本标记,它引用payment.js

我需要在index.js中设置一个名为seatSelected的变量,然后在payment.js中使用它。但是,我不想在payment.php中引用index.js

我尝试创建一个名为globals.js的文件,在index.js之前的index.php中引用它,其中包含以下内容:

var selectedSeat;

function setSelectedSeat(seat){
    selectedSeat = seat;
}

function getSelectedSeat(){
    return selectedSeat;
}
并使用以下命令设置index.js中的值:

setSelectedSeat("test");
在payment.js中接收(在payment.js上方的payment.php中引用globals.ks):


但它提醒“未定义”。我做错什么了吗?如何引用此变量而不引用其更改所在的文件?

您无法访问从其他页面创建的变量

您可以将
localStorage
cookies
一起用作后备

function setSelectedSeat(seat){
    if(localStorage) {
      localStorage['selectedSeat'] = JSON.stringify(seat);
    }
    else {
      //add code to store seat in cookie
    }
}

function getSelectedSeat(){
    if(localStorage) {
      return JSON.parse(localStorage['selectedSeat']);
    }
    else {
      //add code to retrive seat in cookie
    }
}

您试图在从一个页面转换到另一个页面时保持变量的状态,并且您的应用程序似乎有需要会话过期的数据,我建议您使用
sessionstorage
。在polyfills的帮助下,您可以提供
sessionstorage
支持,直到
IE6
浏览器

使用
会话存储
优于
本地存储
  • 会话存储仅保存特定选项卡/窗口的数据,并且当选项卡/窗口关闭时,数据将丢失
  • 由于数据会自动过期,您不必担心会话会过期
  • 您也可以根据自己的意愿终止会话
  • 数据在页面刷新时保持不变
但是请记住,使用
会话存储
只能存储字符串
键值
模式。您需要使用
JSON.stringify
JSON.parse
方法将复杂对象存储在浏览器内存中

在此处,您可以找到可用于在非支持浏览器中提供会话存储支持的多边形填充列表:


您还可以阅读以下文章,更好地理解
sessionstorage
localstorage

座位是在哪里定义的?座位只是一个占位符。我可以发送setSelectedSeat(“测试”);它还没有定义。已编辑。
payment.php
index.php
有什么关系?如果这两个脚本没有同时加载到同一个页面中,您将无法进行交叉引用。相反,您需要将希望持久化的值存储在某个位置(服务器、cookie、localStorage等等),然后从另一个页面加载它。。。您的页面是否在转换期间刷新?另外,您是否希望selectedSeats保留用户在payment.php的index.php中选择的值?啊,没问题。页面将随window.location而更改。当然不会转移过来。存储这些数据的最佳方式是什么?Cookie?别忘了序列化/反序列化值-目前它只适用于字符串
function setSelectedSeat(seat){
    if(localStorage) {
      localStorage['selectedSeat'] = JSON.stringify(seat);
    }
    else {
      //add code to store seat in cookie
    }
}

function getSelectedSeat(){
    if(localStorage) {
      return JSON.parse(localStorage['selectedSeat']);
    }
    else {
      //add code to retrive seat in cookie
    }
}