![](/img/trans.png)
[英]problem calling namespaced function from javascript function in another js file
[英]Calling a javascript function from another .js file
我有两个外部.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);
});
麻烦的是,这不是运行该功能。 我需要两个单独的文件,因为file2.js是根据特定条件动态插入的。 如果我在file1.js的末尾包含setTimeout ...行,则此函数有效
有任何想法吗?
问题是, menuHoverStart
在其作用域之外是不可访问的(由文件#1中的.ready()
回调函数定义)。 您需要在全局范围内(或通过全局范围中可用的任何对象)使此功能可用:
function menuHoverStart(element, topshift, thumbchange) {
// ...
}
$(document).ready(function() {
// ...
});
如果希望menuHoverStart
保留在.ready()
回调中,则需要手动将该函数添加到全局对象(使用函数表达式):
$(document).ready(function() {
window.menuHoverStart = function (element, topshift, thumbchange) {
// ...
};
// ...
});
您已在函数内声明了menuHoverStart
(您传递给就绪的匿名函数)。 这将其范围限制为该功能,您无法从该功能外部调用它。
它没有做任何事情,所以在ready事件触发之前不需要暂停定义它,所以你可以将它移到匿名函数之外。
也就是说,全局变量值得避免,因此您可能更喜欢定义命名空间(以降低名称冲突的风险)并将该函数挂起。
var MYNAMESPACE = {}; // In the global scope, not in a function
// The rest can go anywhere though
MYNAMESPACE.menuHoverStart = function (element, topshift, thumbchange) {
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.