Chrome/jQuery未捕获范围错误:超过了最大调用堆栈大小(函数循环)

Chrome/jQuery Uncaught RangeError: Maximum call stack size exceeded (Function Loop)

本文关键字:堆栈 调用 循环 函数 过了 jQuery 错误 范围 Chrome      更新时间:2024-05-06

所以我很困惑这是怎么发生的,但我的jQuery不知怎么引起了某种冲突,并将该选项卡的内存使用量增加到1.2gbs以上。

<script>
function homeFader(){
        setTimeout(function() { 
            $("#homeBannerContainer").fadeOut(3000);
            $(".bannerRightUnicef").animate({marginLeft:"457px"},0);
        }, 3000);
        setTimeout(function() { 
            $("#homeBannerContainerTwo").fadeOut(3000);
        }, 8000);
        setTimeout(function() { 
            $(".bannerRightUnicef").animate({marginLeft:"0px"},1000);
        }, 9000);
        setTimeout(function() { 
            $("#homeBannerContainer").fadeIn(3000,function() {  
                $("#homeBannerContainerTwo").css("display","block");
            });
        }, 13000);
        setInterval(function() { homeFader(); },15000);

}

$(document).ready(function() {
    homeFader();
});
</script>

有什么解决办法吗?

非常感谢

~马特

如注释中所述,在homeFader中使用setTimeout()而不是setInterval

function homeFader() {
    setTimeout(function () {
        $("#homeBannerContainer").fadeOut(3000);
        $(".bannerRightUnicef").animate({
            marginLeft: "457px"
        }, 0);
    }, 3000);
    setTimeout(function () {
        $("#homeBannerContainerTwo").fadeOut(3000);
    }, 8000);
    setTimeout(function () {
        $(".bannerRightUnicef").animate({
            marginLeft: "0px"
        }, 1000);
    }, 9000);
    setTimeout(function () {
        $("#homeBannerContainer").fadeIn(3000, function () {
            $("#homeBannerContainerTwo").css("display", "block");
        });
    }, 13000);
    setTimeout(homeFader, 15000);
}
$(document).ready(function () {
    homeFader();
});

或者像一样调用setInterval

function homeFader() {
    setTimeout(function () {
        $("#homeBannerContainer").fadeOut(3000);
        $(".bannerRightUnicef").animate({
            marginLeft: "457px"
        }, 0);
    }, 3000);
    setTimeout(function () {
        $("#homeBannerContainerTwo").fadeOut(3000);
    }, 8000);
    setTimeout(function () {
        $(".bannerRightUnicef").animate({
            marginLeft: "0px"
        }, 1000);
    }, 9000);
    setTimeout(function () {
        $("#homeBannerContainer").fadeIn(3000, function () {
            $("#homeBannerContainerTwo").css("display", "block");
        });
    }, 13000);
}
$(document).ready(function () {
    homeFader();
    setInterval(homeFader, 15000);
});