Javascript jQuery函数未定义错误

时间:2018-06-23 10:50:53

标签: javascript jquery

嗨,这是我在js页面中的代码,其名称为script.js

    (function ($) {
    myfunc()
    {
        //some jquery codes 
    }
} 

并且我在这样的html页面中使用此功能

    <html>
<script src='js/script.js'></script>
<button id='btnSent'>sent</button>
<script>
    (function ($) {
         $('#btns').click(function () {
            myfunc();
         })
    }(jQuery));
</script>
</html>

但是在控制台中,我有一个myfunc是未定义的错误

2 个答案:

答案 0 :(得分:1)

myfunc不是全局的-由于普通的Javascript范围规则,它仅在上方的(function ($) {块中可见。尝试只使用一个(外部)函数,这样内部块中的任何其他内容都将能够看到myfunc,它也位于内部块中:

(function ($) {
  function myfunc(){
    //some jquery codes 
  }
  $('#btns').click(function () {
    myfunc();
  })
}(jQuery));

如果出于某种原因必须将功能分开,则可以将script.js分配给window变量:

(function ($) {
  window.myfunc = function() {
    //some jquery codes 
  }
})(jQuery);

答案 1 :(得分:0)

两种情况下都使用IIFE。 myfunc()的范围在script.js中的IIFE内,而不在全局范围内。 因此,您无法从html中的IIFE访问它。 要么不要在您的script.js中使用IIFE,要么

function myfunc(jQuery)
    {
        //some jquery codes 
    }

或在IIFE中的脚本标记中包含myfunc()。 这将有助于您更好地了解IIFEs