首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript:.js文件之间共享的全局变量

问Javascript:.js文件之间共享的全局变量
EN

Stack Overflow用户
提问于 2011-12-07 13:28:58
回答 3查看 91.2K关注 0票数 18

我的全局变量有问题。

考虑到我有以下文件: init.html、main.html、init.js、main.js和help.js:

其中,init.html:

代码语言:javascript
复制
<HTML>
   <HEAD>
   <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.3.min.js"></script>
   <script type="text/javascript" charset="UTF-8" src="init.js" ></script>
   <script type="text/javascript" charset="UTF-8" src="main.js" ></script>
   <script type="text/javascript" charset="UTF-8" src="help.js" ></script>

   </HEAD>
   <BODY>
       <script>
          $(document).ready(function() {
          test();
        });
       </script>
  </BODY>
</HTML>

在init.js中:

代码语言:javascript
复制
function test(){
alert(window.glob);
}

在main.html中:

代码语言:javascript
复制
<HTML>
  <HEAD>
      <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.3.min.js"> </script>
      <script type='text/javascript' > 
          top.glob = "global variable";
      </script>
      <script type="text/javascript" charset="UTF-8" src="help.js" ></script>   
      <script type="text/javascript" charset="UTF-8" src="main.js" ></script>
  </HEAD>
  <BODY>    
     <div id="divtest"></div> 
     <form>
        <input type="button" value="button" onClick="callTest()" />
     </form>
  </BODY>
</HTML>

main.js:

代码语言:javascript
复制
function change(p){
   window.glob = p;

   $('#divtest').html("<iframe id='IFRAMEtest' width='720' height='400' frameborder='0' src='init.html'></iframe>");
}

在help.js中:

代码语言:javascript
复制
function callTest(){
 change('param');
}

当我单击in按钮时,显示“全局变量”,但我需要显示"param“。

简而言之,我需要一个.js文件读取另一个js文件中的全局变量,其中这个变量被输入到用户事件调用的函数中。

谢谢。

编辑 -导入文件前初始化全局变量。js和使用顶部。工作在IE和火狐,但铬显示“未定义”

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-07 13:43:58

看看这里:跨多个文件的Javascript中的全局变量 --主要是,您可能必须在实际文件之前声明全局变量,所以尝试在包含到help.js之前插入以下内容

所以试试看。

代码语言:javascript
复制
<script type='text/javascript' > 
  window.glob = "global variable"; 
</script>

所以你的代码应该是:

代码语言:javascript
复制
<head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.3.min.js" ></script>

    <script type='text/javascript' > 
        window.glob = "global variable";
    </script>

    <script type="text/javascript" charset="UTF-8" src="help.js" ></script>   
    <script type="text/javascript" charset="UTF-8" src="main.js" ></script>
</head>

试试看它是否有效。另外,为此从main.js中删除全局变量声明。

票数 27
EN

Stack Overflow用户

发布于 2011-12-07 13:41:31

实际上,没有一个跨窗口(框架)的全局上下文。“家族”中的所有帧都可以访问一个名为"top“的变量,该变量指向最上面的窗口,因此您可以使用它。

代码语言:javascript
复制
top.glob = "global variable";

在你的iframe代码中:

代码语言:javascript
复制
function test(){
  alert(top.glob);
}

编辑- 下面是代码的一个稍微简化的版本,这对我来说很好。

票数 10
EN

Stack Overflow用户

发布于 2011-12-07 13:44:22

当您在框架内并且希望从父窗口中获得一个窗口变量时,您必须引用它。

使用top或window.top。

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

https://stackoverflow.com/questions/8416076

复制
相关文章

相似问题

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