尝试创建背景图片幻灯片并收到此错误...这是我正在尝试实现的代码:
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)
});
答案 0 :(得分:5)
当您撰写arguments.callee(i)
时,您正在调用 arguments.callee
并将其结果(如果有)传递给setTimeout
。这导致无限递归。
您需要传递setTimeout
和稍后调用arguments.callee
的匿名函数,如下所示:
var me = arguments.callee;
setTimeout(function() { me(i); }, 1000);
答案 1 :(得分:1)
这创建了对backgroundSlide
的无限重复方法调用。
为什么不使用setInterval尝试不同的实现呢?
这样的事情:
var bgArr = [ 'sample1.jpg','sample2.jpg','sample3.jpg' ];
var currentBg = 0;
function backgroundSlide() {
$j("#home_sub_banner").css("background-image", "url("+bgArr[currentBg++]+")");
if (currentBg == bgArr.length) currentBg = 0;
}
setInterval(backgroundSlide, 1000);
PS:上面的代码没有经过测试,但你会得到它的要点。