从另一个.js文件调用javascript函数

我有两个外部.js文件。 第一个包含一个函数。 第二个调用函数。

file1.js

$(document).ready(function() { function menuHoverStart(element, topshift, thumbchange) { ... function here ... } }); 

file2.js

 $(document).ready(function() { setTimeout(function() { menuHoverStart("#myDiv", "63px", "myIMG"); },2000); }); 

麻烦的是,这不是运行该function。 我需要两个单独的文件,因为file2.js是根据特定条件动态插入的。 如果我在file1.js的末尾包含setTimeout …行,则此函数有效

有任何想法吗?

问题是, menuHoverStart在其作用域之外是不可访问的(由文件#1中的.ready()回调函数定义)。 您需要在全局范围内(或通过全局范围中可用的任何对象)使此function可用:

 function menuHoverStart(element, topshift, thumbchange) { // ... } $(document).ready(function() { // ... }); 

如果希望menuHoverStart保留在.ready()回调中,则需要手动将该函数添加到全局对象(使用函数表达式):

 $(document).ready(function() { window.menuHoverStart = function (element, topshift, thumbchange) { // ... }; // ... }); 

您已在函数内声明了menuHoverStart (您传递给准备就绪的匿名函数)。 这将其范围限制为该function,您无法从该function外部调用它。

它在那里没有任何事情,所以在ready事件触发之前不需要推迟定义它,所以你可以将它移到匿名函数之外。

也就是说,全局变量值得避免,因此您可能更喜欢定义命名空间(以降低名称冲突的风险)并将该函数挂起。

 var MYNAMESPACE = {}; // In the global scope, not in a function // The rest can go anywhere though MYNAMESPACE.menuHoverStart = function (element, topshift, thumbchange) {