簡體   English   中英

從另一個.js文件調用javascript函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM