2015-12-24 92 views
0


我是JS新手,刚才对我的foll有怀疑。编码


getInput.js将变量传递给JS中的另一个页面

setVal(5,6); 

global.js

var x ; var y ; 
function setVal(a,b){ 
x=a; 
y=b; 
} 
function getVal(){ 
    //code to return the value of x and y as an array 
} 

getVal.js

arr = getVal(); 

1.HTML:

<html> 
<head> 
<script src='global.js'></script> 
<script src='getInput.js'></script> 
</head> 
<body> 
<!-- content of body --> 
<!--Code to navigate to 2.html --> 
</body> 
</html> 

2.HTML:

<html> 
    <head> 
    <script src='global.js'></script> 
    <script src='getVal.js'></script> 
    </head> 
    <body> 
    <!-- content of body --> 
    </body> 
    </html> 

当2.HTML被重定向,它显示阵列“未定义”

我知道,变量可以使用页面缓存之间传递,并有各种其他方法来做同样的事情。但我想知道为什么上述方法不起作用。如果有人让我知道更好的解决方案,这将是相当可观的。

回答

1

因为在这种情况下移动到新页面2.html时,上一页将被销毁,新页面将被解析并加载。因此,您的脚本global.js在页面2.html上重新执行,当您调用函数getVal()时,这些变量为undefined,因为它们没有分配给它们的值。

HTTP是无状态的,它不能保留不同请求之间的信息。您需要某种机制将这些值存储在Cookie中,或本地存储中或某种数据库中。

0

使用Cookie设置,让你的数组的值在其他HTML页面,就像这样:

设置饼干:

document.cookie="x=John; y=Mike"; 

获得 cookie值:

var arr = document.cookie; 

然后,您可以使用字符串标记化器来标记化arr

- 或 -

使用本地存储,就像这样:

设置项目:

localStorage.setItem('arr',JSON.stringify(arr)); 

获得项目:

arr = localStorage.getItem('arr'); 
arr = JSON.parse(arr); 
0

有两个stor年龄对象适用于每个浏览器。 1.本地存储。 2.会话存储。 如果您的意图是仅为会话使用变量,请使用sessionStorage对象。按照您的要求,您可以像这样使用它。

sessionStorage.setItem("x", 5); 
sessionStorage.setItem("y", 6); 

您可以通过

var x = sessionStorage.getItem("x"); 
var y = sessionStorage.getItem("y"); 

本地存储获取会话中的任何页面的“x”和“y”的值也做同样的工作。但即使在会话过期之后它仍然保持价值。有关会话和本地存储对象的更多信息,请参阅下面的链接。希望它有帮助。

https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API

相关问题