我有两个外部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
});