由于$(document).ready

时间:2016-11-12 11:28:33

标签: javascript jquery jquery-ui jquery-mobile jquery-plugins

我们有两个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()

请帮忙。

4 个答案:

答案 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() {...});,您可以在其中创建函数,这意味着您创建的函数仅存在于该函数的范围内,例如。

&#13;
&#13;
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;
&#13;
&#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()。 我会帮助你。