我有两个外部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.
});
答案 0 :(得分:3)
您的变量不是全局变量。您已在函数内声明它,因此它是该函数的本地函数。您需要将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
});
由于在其他脚本的文档就绪处理程序运行之前不尝试使用该值,因此没问题。
答案 1 :(得分:1)
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>
希望这有助于你
答案 2 :(得分:1)
添加答案,如果您在第一个javascript文件中删除了“var”关键字,您的代码就可以正常工作。 。 。
删除'var'将值赋给全局变量,如果不存在,则创建全局变量。 。 .so,它将与全局myvar相同
<script src="script1.js"></script>
<script src="script2.js"></script>
SCRIPT1:
$(function(){
myvar=35;
});
SCRIPT2:
$(function(){
alert(myvar); //this will work
});