我们有两个js fie,test-1.js,test-2.js。
<script type="text/javascript" src="test-2.js"></script>
<script type="text/javascript" src="test-1.js"></script>
在test-1.js中,代码是
$(document).ready(function (){
function test_alert(){ alert("hiii"); }
});
在test-2.js
中 $(document).ready(function (){
function test_alert_2(){
test_alert();
alert("helloo");
}
});
但是test_alert()在test-2.js中不起作用。怎么解决这个?为什么这不起作用?
解决这个问题我重新安排了
<script type="text/javascript" src="test-1.js"></script>
<script type="text/javascript" src="test-2.js"></script>
现在,它也无法正常工作。我无法删除 document.ready()。
所以我需要一个解决方案,而不需要删除document.ready()
请帮忙。
答案 0 :(得分:1)
在 test-2.js 之前调用 test-1.js 。
示例强>
<script type="text/javascript" src="test-1.js"></script>
<script type="text/javascript" src="test-2.js"></script>
答案 1 :(得分:0)
如果您想在test-1.js
中使用test-2.js
中的代码,则必须先加载test-1.js
。 JavaScript为顺序执行同步代码。因此,如果尚未执行该代码,则无法访问其他范围(例如文件)中的代码。
答案 2 :(得分:0)
添加第二个答案是因为您将顺序更改为正确,但随后也更改了脚本的内容。由于它们都包含$(document).ready(function() {...});
,您可以在其中创建函数,这意味着您创建的函数仅存在于该函数的范围内,例如。
function foo() {
return 1;
}
$(document).ready(function() {
// this is a new scope, functions created here will not be accessible outside of it.
function bar() {
return 2;
}
});
foo(); // 1
bar(); // Error: undefined is not a function
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 3 :(得分:0)
这里有两个JavaScript文件,你在test-2.js文件中使用了一个函数,它存在于test-1.js文件中。你的test_alert函数无效,因为你在js文件完全加载之前调用了functin ,由于文件加载延迟,test_alert()无效。
现在,您可以使用window.setTimeout()来解决此问题。 如: -
$(document).ready(function (){
function test_alert_2(){
window.setTimeout(function(){
test_alert();
alert("helloo");
},1000);
}
});
通过此代码,将在脚本加载一秒后调用test_alert()。 我会帮助你。