"太多的递归"jquery错误

whi*_*732 1 recursion jquery

试图创建一个背景图片幻灯片,并收到此错误...这是我正在尝试实现的代码:

var $j = jQuery.noConflict();
$j( function(){
    var bgArr = [ 'sample1.jpg','sample2.jpg','sample3.jpg' ];
    function backgroundSlide(i) {
             $j("#home_sub_banner").css("background-image", "url("+bgArr[i++]+")");
             if (i == bgArr.length) i = 0;
             var st = setTimeout(arguments.callee(i), 1000);
    }
backgroundSlide(0)

});
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 5

当你写作时arguments.callee(i),你正在调用 arguments.callee并将结果(如果有的话)传递给setTimeout.这导致无限递归.

你需要稍后setTimeout调用的pass 和anonymous函数arguments.callee,如下所示:

var me = arguments.callee;
setTimeout(function() { me(i); }, 1000);
Run Code Online (Sandbox Code Playgroud)