无法访问变量



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

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

script1

$(function(){
    var myvar=35;
});

script2

$(function(){
    alert(myvar); //this line causing error undefined.
});

您的变量不是全局变量。您已经在函数中声明了它,所以它是该函数的本地函数。您需要将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
});

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

Script1.js

  var i=10;

Script2.js

  function call(){
      alert(i);
  }

Sample.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>

希望这能帮助您

添加到答案中,如果您在第一个javascript文件中删除了"var"关键字,您的代码就会工作。

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

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

script1:

$(function(){

myvar=35;
});

script2:

$(function(){
alert(myvar); //this will work
});

相关内容

  • 没有找到相关文章

最新更新