如何在单独的文件js中调用函数?

时间:2015-03-08 18:01:06

标签: javascript

我在两个文件js,file1和file2中定义了一些函数。在每个文件中,所有函数都在$(document).ready(function(){});内。我小心地将file1放在file2上面的php文件中,并从file2中的file1调用一个函数,但是console返回undefined函数。这有什么不对?

3 个答案:

答案 0 :(得分:1)

如果函数是在文档就绪处理程序中定义的,那么它们只存在于该范围内,并且在其他任何地方都无法访问。

最简单的解决方案是在文档就绪处理程序之外定义你的函数,并在就绪处理程序内或彼此内部使用

文件1:

function myFunc() {
    myOtherOtherFunc();
}

$(document).ready(function () {
    myOtherFunc();
});

文件2:

function myOtherFunc() {
}

function myOtherOtherfunc() {
}

$(document).ready(function () {
    myFunc();
});

应该注意的是,这会将函数放在全局范围内,这应该保持在最低限度,因此如果您发现需要在文件之间共享很多,那么您应该考虑使用命名空间甚至是某些东西比模块加载器更复杂(例如require.js)。

答案 1 :(得分:0)

因为您在另一个函数中定义了函数,所以它们不是全局变量。这是的事情。

有几种方法可以解决这个问题:

  1. 将它们设为全局(blech)或

  2. 使用像RequireJS或

  3. 这样的AMD机制
  4. 使用一个引用了所有功能的全局

  5. 最后看起来像这样:

    var MyApp = MyApp || {};
    $(document).ready(function() {
        MyApp.myFunction = function() {
            // ...
        };
    });
    

    然后,您可以通过MyApp.myFunction()从任何地方拨打电话。

答案 2 :(得分:-1)

$(document).ready应该在html页面上调用。我建议你将各个js文件中的函数分开,并从document.ready页面调用这些函数。我认为这应该可以解决问题。