javascript中的全局变量(从一个文件声明,从另一个文件输入值,并从另一个文件访问)
我在global.js文件中声明了javascript全局变量,例如:javascript中的全局变量(从一个文件声明,从另一个文件输入值,并从另一个文件访问),javascript,Javascript,我在global.js文件中声明了javascript全局变量,例如: var glbValue; 并将全局变量glbValue的值从放在first.html中,例如: <script type="text/javascript" src="global.js"></script> <script type="text/javascript"> function onBtnSubmit() { glbValue=123; } </script&g
var glbValue;
并将全局变量glbValue的值从放在first.html中,例如:
<script type="text/javascript" src="global.js"></script>
<script type="text/javascript">
function onBtnSubmit()
{
glbValue=123;
}
</script>
<script type="text/javascript" src="global.js"></script>
<script type="text/javascript">
function onBtnClick()
{
alert(glbValue);
}
</script>
函数onBtnSubmit()
{
GLB值=123;
}
并从second.html访问全局变量glbValue,例如:
<script type="text/javascript" src="global.js"></script>
<script type="text/javascript">
function onBtnSubmit()
{
glbValue=123;
}
</script>
<script type="text/javascript" src="global.js"></script>
<script type="text/javascript">
function onBtnClick()
{
alert(glbValue);
}
</script>
函数onBtnClick()
{
警报(GLB值);
}
它为我提供了输出未定义的来代替123,为什么?尝试使用本地存储: first.html:
localStorage.setItem("glbValue", "123");
alert(localStorage.getItem("glbValue"));
second.html:
localStorage.setItem("glbValue", "123");
alert(localStorage.getItem("glbValue"));
尝试使用本地存储: first.html:
localStorage.setItem("glbValue", "123");
alert(localStorage.getItem("glbValue"));
second.html:
localStorage.setItem("glbValue", "123");
alert(localStorage.getItem("glbValue"));
加载页面时,其所有脚本文件将在新上下文中执行。浏览器无法“记住”您在上一页中所做的操作。如果要在页面之间共享变量,可以使用cookie,或者更好的方法是使用
localStorage
或sessionStorage
localStorage
sessionStorage
李>
我认为在您的情况下,2º的解决方案是最好的:
first.html:
<script type="text/javascript">
function onBtnSubmit()
{
sessionStorage.setItem('gblValue', 123);
}
</script>
函数onBtnSubmit()
{
sessionStorage.setItem('gblValue',123);
}
second.html
<script type="text/javascript">
function onBtnClick()
{
alert(sessionStorage.getItem('gblValue'));
}
</script>
函数onBtnClick()
{
警报(sessionStorage.getItem('gblValue');
}
您不再需要该全局变量。
此解决方案的唯一问题是IE8及以下版本不支持此功能,但有一些好的多边形填充透明地使用Cookie。加载页面时,其所有脚本文件都在新上下文中执行。浏览器无法“记住”您在上一页中所做的操作。如果要在页面之间共享变量,可以使用cookie,或者更好的方法是使用
localStorage
或sessionStorage
localStorage
sessionStorage
李>
我认为在您的情况下,2º的解决方案是最好的:
first.html:
<script type="text/javascript">
function onBtnSubmit()
{
sessionStorage.setItem('gblValue', 123);
}
</script>
函数onBtnSubmit()
{
sessionStorage.setItem('gblValue',123);
}
second.html
<script type="text/javascript">
function onBtnClick()
{
alert(sessionStorage.getItem('gblValue'));
}
</script>
函数onBtnClick()
{
警报(sessionStorage.getItem('gblValue');
}
您不再需要该全局变量。
此解决方案的唯一问题是IE8和以下版本不支持此功能,但有一些好的多填充透明地使用cookie。浏览器在加载
second.html
时不知道有一个名为gbValue
的变量,其值为123
。您是否先加载first.html
,然后在first.html
中加载second.html
?那么您期望什么?为html文件和值都加载了global.js。对第一页的P.S引用在第二页中将不可用。因此,您分配的值不会出现在第二页中。如果您希望在两个页面之间共享变量,则需要使用cookies
pages@anurupr是的,首先我加载first.html,然后在提交时我将导航到second.html浏览器不知道有一个名为gbValue
的变量,它的值为123
加载second.html
。您是否先加载first.html
,然后在first.html
中加载second.html
?那么您期望什么?为html文件和值都加载了global.js。对第一页的P.S引用在第二页中将不可用。因此,您分配的值不会出现在第二页中。如果您希望在两个页面之间共享变量,则需要使用cookies
pages@anurupr是的,首先我加载first.html,在提交时我将导航到second.html