未捕获的ReferenceError:方法未定义js / jQuery

时间:2015-08-07 15:37:30

标签: javascript jquery html

我有一个main.js文件,其中包含一个方法:

;(function ($, window, document, undefined) {
    'use strict';

    var testing = function(d) {
        //irrelevant code
    };

})(jQuery, window, document);

在我的HTML中,就在</body>之前,我引用了jquery.js,紧随其后的是main.js

<script src="/Scripts/jquery-2.1.4.js"></script>
<script src="/Scripts/main.js"></script>

然后是需要调用testing的{​​{1}}函数的内联脚本:

main.js

我在第<script type="text/javascript"> ( function($) { $( document ).ready(function() { var data = []; //..data is then populated and the function is called testing(data); }); } ) ( jQuery );

上收到以下错误
  

未捕获的ReferenceError:未定义测试

为什么会发生这种情况,我该如何解决?如果我的方法错了哪个是正确的?

P.S。这是一个ASP.NET MVC项目

1 个答案:

答案 0 :(得分:1)

您的main.js文件正在调用匿名函数,该函数定义了该范围内的testing函数。该功能完成后,testing不再存在。

所以你有几个选择。

  1. testing移至全局范围

    //main.js
    function testing(d) {
      //irrelevant code
    };
    
  2. testing与其他JS一起移动。

     <script type="text/javascript">
       (function($) {
         function testing() {
           ...
         }
    
         $(document).ready(function() {
            // call testing here
         });
       })(jQuery);
     </script>