使用setInterval移动轮播

时间:2011-08-21 11:07:23

标签: javascript jquery setinterval carousel

我正在尝试使用以下代码来每秒移动轮播元素:

function moveCarousel(){
        var x = $('.carousel_title.active');
        var next = x.next();
        x.removeClass('active');
        next.addClass('active');

    }

    setInterval(moveCarousel(),1000);

但有两件事似乎出错:

  1. 第一个周期立即发生
  2. 不再发生循环
  3. 我哪里出错?

2 个答案:

答案 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),这不是您想要的。