我正在尝试使用以下代码来每秒移动轮播元素:
function moveCarousel(){
var x = $('.carousel_title.active');
var next = x.next();
x.removeClass('active');
next.addClass('active');
}
setInterval(moveCarousel(),1000);
但有两件事似乎出错:
我哪里出错?
答案 0 :(得分:2)
你应该删除最后一行的大括号
function moveCarousel()
{
var x = $('.carousel_title.active');
var next = x.next();
x.removeClass('active');
next.addClass('active');
}
setInterval(moveCarousel,1000);
在这种情况下,您将函数(moveCarousel
)传递给nother函数(setInterval
),因此函数不会被执行(这是大括号的用途)但是要通过像一个对象。
您的原始代码是将undefined
(因为moveCarousel
没有返回任何内容)传递给setInterval函数 - 而setInterval将函数作为它的第一个参数 - 而不是undefined
你也可以这样做:
setInterval(function () { moveCarousel(); }, 1000);
您可以在其中构建一个匿名函数来调用moveCarousel。
答案 1 :(得分:1)
你正在调用你应该传递函数的函数:
function moveCarousel(){
var x = $('.carousel_title.active');
var next = x.next();
x.removeClass('active');
next.addClass('active');
}
setInterval(moveCarousel, 1000); // no () here
目前,您立即调用该函数并将其评估为:
setInterval(undefined, 1000);
(该函数不返回任何内容,因此返回undefined
),这不是您想要的。