我不知道我在这里失踪了什么。当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
答案 0 :(得分:1)
直接调用函数而不是使用字符串。这样你可以避免范围问题:
setInterval(midgroundFunc, midTime);
setInterval(foregroundFunc, foreTime);
setInterval(backgroundFunc, backTime);
答案 1 :(得分:1)
当您向setInterval
提供字符串时,它会在时间到来时在全局上下文中评估此字符串。如果它应该调用的函数不是全局的,它将无法调用它们。
(function () {
function callMe() { }
setInterval("callMe()", 1000);
})();
// "callMe()" will be evaluated here,
// where function callMe is not in scope
将引用传递给回调函数,而不是字符串:
setInterval(callMe, 1000);