使用setInterval移动旋转木马

Moving a carousel using setInterval

本文关键字:旋转木马 移动 setInterval 使用      更新时间:2023-09-26

我试图使用以下代码移动carousel元素通过每秒钟:

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

但似乎有两件事出了问题:

  1. 第一个周期立即发生
  2. 不再发生循环

我哪里做错了?

你应该去掉最后一行的大括号

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

你在调用函数时应该传递函数本身:

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