0

我有两个外部 Javascript 文件。我在一个文件中声明了一个变量,并试图从另一个文件中访问该变量。当我尝试访问它时,它会返回undefined.

<script src="script1.js"></script>
<script src="script2.js"></script>

脚本1

$(function(){

    var myvar=35;
});

脚本2

$(function(){

    alert(myvar); //this line causing error undefined.

});
4

3 回答 3

4

你的变量不是全局的。您已在函数内声明它,因此它是该函数的本地函数。您需要将var语句移到文档就绪功能之外:

var myvar=35;

$(function(){
    // other document ready stuff here, including
    // using or assigning a value to myvar if needed
});

然后它将是全局范围的,并且可以从其他脚本文件访问(只要它们包含在声明它的文件之后)。

如果您在文档准备好之前不知道要分配的值,请执行以下操作:

var myvar;       // declare variable

$(function(){
    myvar = 35;  // assign value
});

由于在其他脚本的文档就绪处理程序运行之前您不会尝试使用该值,所以这很好。

于 2012-08-21T05:31:19.820 回答
1

Script1.js

  var i=10;

Script2.js

  function call(){
      alert(i);
  }

示例.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<script type="text/javascript" charset="utf-8" src="Script1.js" ></script>
<script type="text/javascript" charset="utf-8" src="Script2.js" ></script>
<script>
</script>
<BODY onload='call();'>
</BODY>
</HTML>

希望这可以帮助你

于 2012-08-21T05:40:00.417 回答
1

添加到答案中,如果您在第一个 javascript 文件中删除了 'var' 关键字,您的代码将起作用。. . .

删除 'var' 会将值分配给全局变量,如果不存在,则会创建一个全局变量。. .so,它将与全局 myvar 相同

  <script src="script1.js"></script>
  <script src="script2.js"></script>

脚本1:

$(function(){


myvar=35;

});

脚本2:

$(function(){

alert(myvar); //this will work

});
于 2012-08-21T07:05:35.263 回答