首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript中的全局变量(从一个文件中声明它,从另一个文件中放置值,从另一个文件访问它)

问javascript中的全局变量(从一个文件中声明它,从另一个文件中放置值,从另一个文件访问它)
EN

Stack Overflow用户
提问于 2014-03-18 08:46:25
回答 2查看 130关注 0票数 1

我在global.js文件中声明了javascript全局变量,例如:

代码语言:javascript
复制
var glbValue;

将全局变量glbValue的值从first.html中计算出来,例如:

代码语言:javascript
复制
<script type="text/javascript" src="global.js"></script>
<script type="text/javascript">
function onBtnSubmit()
{
   glbValue=123;
}
</script>

并从glbValue second.html访问全局变量:

代码语言:javascript
复制
<script type="text/javascript" src="global.js"></script>
<script type="text/javascript">
function onBtnClick()
{
   alert(glbValue);
}
</script>

它给我的输出未定义的为123,为什么?

EN

回答 2

Stack Overflow用户

发布于 2014-03-18 08:55:51

尝试使用本地存储:

first.html:

代码语言:javascript
复制
localStorage.setItem("glbValue", "123");

second.html:

代码语言:javascript
复制
alert(localStorage.getItem("glbValue"));
票数 2
EN

Stack Overflow用户

发布于 2014-03-18 08:59:27

当一个页面加载时,它的所有脚本文件都在一个新的上下文中执行。浏览器不会“记住”您在最后一页中所做的事情。如果要在页面之间共享变量,可以使用cookie,或者更好的是使用localStorage或sessionStorage。

  1. 如果您希望保存该值,即使在关闭浏览器时也要使用localStorage。
  2. 如果希望仅在当前会话期间保留该值,请使用sessionStorage。

我认为,在你的情况下,2%的解决方案是最好的:

first.html

代码语言:javascript
复制
<script type="text/javascript">
function onBtnSubmit()
{
   sessionStorage.setItem('gblValue', 123);
}
</script>

second.html

代码语言:javascript
复制
<script type="text/javascript">
function onBtnClick()
{
   alert(sessionStorage.getItem('gblValue'));
}
</script>

你不再需要那个全局变量了。这个解决方案的唯一问题是IE8和更低的版本不支持这一点,但是有很好的填充方法可以透明地使用cookies。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22474239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档