我正在Javascript上构建自定义滑块,我希望每次用户单击滑块的div时,滑块应停止X秒钟。

我的代码是:

$(document).ready(function () {
    var ciclo;
    var index_slide = 1;

    function startSlidercicle() {
        ciclo = setInterval( function() {
            // Slider code goes here
        }, 3000);
    }

    //Here I start the slider animation
    startSlidercicle();

    //When the user clicks on a div called 'slide', stop the cycle and start again the animation cycle
    $('.slide').on('click', function() {
        clearInterval(ciclo);
        setTimeout(startSlidercicle(), 3000);
    });
});

但是问题在于,每次单击并停止滑块时,循环开始的速度越来越快。我该如何解决?

最佳答案

代替:

clearInterval(ciclo);
setTimeout(startSlidercicle(), 3000);

要么:
clearInterval(ciclo);
setTimeout(startSlidercicle, 3000);

我将代码更改为:
clearInterval(ciclo);
startSlidercicle();

现在,滑块可以正常工作了。我认为,在前两个建议中,每当我单击div时,都会创建一个新函数,该函数在现有循环中“重叠”,因此,看起来滑块加快了,但是从头开始只有一个循环另一个。

08-15 18:12