SetInterval表示函数不存在

SetInterval says function does not exist

本文关键字:不存在 函数 表示 SetInterval      更新时间:2023-09-26

我不知道我错过了什么。当setInterval开始运行时,它表示该函数不存在。我知道它在那里(我没有包括变量……因为那不是问题)。有人知道为什么我得到一个错误说的功能不存在吗?

function midgroundFunc() {
    $('#midground').css({
        backgroundPosition: '0px 0px'
    });
    $('#midground').animate({
        backgroundPosition: "(" + midX + " " + midY + ")"
    }, midTime, midEase);
}
function foregroundFunc() {
    $('#foreground').css({
        backgroundPosition: '0px 0px'
    });
    $('#foreground').animate({
        backgroundPosition: "(" + foreX + " " + foreY + ")"
    }, foreTime, foreEase);
}
function backgroundFunc() {
    $('#back').css({
        backgroundPosition: '0px 0px'
    });
    $('#back').animate({
        backgroundPosition: "(" + backX + " " + backY + ")"
    }, backTime, backEase);
}
$(document).ready(function() {
    $('#midground').css({
        backgroundImage: 'url(' + midImage + ')'
    });
    $('#foreground').css({
        backgroundImage: 'url(' + foreImage + ')'
    });
    $('#back').css({
        backgroundImage: 'url(' + backImage + ')'
    });
    $.backstretch(backgroundStretch);

    midgroundFunc();
    foregroundFunc();
    backgroundFunc();
    setInterval("midgroundFunc()", midTime);
    setInterval("foregroundFunc()", foreTime);
    setInterval("backgroundFunc()", backTime);
});

这是我得到的错误:

错误:backgroundFunc没有定义线:96

错误:midgroundFunc未定义线:94

错误:foregroundFunc未定义线:95

直接调用函数而不是使用字符串。这样可以避免作用域问题:

 setInterval(midgroundFunc, midTime);
 setInterval(foregroundFunc, foreTime);
 setInterval(backgroundFunc, backTime);

当您向setInterval提供字符串时,它将在全局上下文中计算该字符串。如果它应该调用的函数不是全局的,它将无法调用它们。

(function () {
    function callMe() { }
    setInterval("callMe()", 1000);
})();
// "callMe()" will be evaluated here,
// where function callMe is not in scope

传递一个引用给回调函数,而不是一个字符串:

setInterval(callMe, 1000);