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

我在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>
<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