我正在尝试使用以下代码每秒移动一次轮播元素:
function moveCarousel(){
var x = $('.carousel_title.active');
var next = x.next();
x.removeClass('active');
next.addClass('active');
}
setInterval(moveCarousel(),1000);
但是有两件事似乎出错了:
第一个周期即刻发生
没有进一步的循环发生
我哪里出问题了?
最佳答案
您应该删除最后一行的花括号
function moveCarousel()
{
var x = $('.carousel_title.active');
var next = x.next();
x.removeClass('active');
next.addClass('active');
}
setInterval(moveCarousel,1000);
在这种情况下,您要将一个函数(
moveCarousel
)传递给另一个函数(setInterval
),因此该函数将不被执行(这就是括号的含义),而是像对象一样被传递。您的原始代码将
undefined
(因为moveCarousel
不返回任何内容)传递给setInterval函数-而setInterval接受一个函数作为它的第一个参数-不是undefined
您也可以这样做:
setInterval(function () { moveCarousel(); }, 1000);
在这里构造一个匿名函数来调用moveCarousel。