jQuery:停止并启动“setInterval”

时间:2014-02-15 16:37:31

标签: javascript jquery html setinterval clearinterval

我的网站上有幻灯片,但是有问题。

在这里,我的JS:

var size_ini = 1;
$(document).ready(function() {
    setInterval('$("#next").click()',10000)
    $("#next").click(function() {
        if(size_ini < 3);
        size_ini++;
        else
        size_ini = 1
        $(".sample").hide();
        $("#id" + size_ini).show();
        $(".comment" + size_ini).show();
        $(".comment_description" + size_ini).show();
    });
    $("#prev").click(function() {
        if(size_ini > 1)
        size_ini--;
        else
        size_ini = 3;
        $(".sample").hide();
        $("#id" + size_ini).show();
        $(".comment" + size_ini).show();
        $(".comment_description" + size_ini).show();
    });
});

如你所见,我的计时器为10秒。用于幻灯片。我有一个上一个和下一个按钮。因此,当我点击其中一个按钮时,计时器应该停止并再次启动。我尝试过“clearInterval”,但这不起作用。

任何人都可以说出这是如何运作的。

这是FIDDLE

3 个答案:

答案 0 :(得分:9)

Fiddle Demo

var size_ini = 1;
$(document).ready(function () {
    var timer = setInterval('$("#next").click()', 10000); //assign timer to a variable
    $("#next").click(function () {
        if (size_ini < 3) size_ini++;
        else size_ini = 1
        $(".sample").hide();
        $("#id" + size_ini).show();
        clearInterval(timer); //clear interval
        timer = setInterval('$("#next").click()', 10000); //start it again
    });
    $("#prev").click(function () {
        if (size_ini > 1) size_ini--;
        else size_ini = 3;
        $(".sample").hide();
        $("#id" + size_ini).show();
        clearInterval(timer); //clear interval
        timer = setInterval('$("#next").click()', 10000); //start it again
    });
});

答案 1 :(得分:3)

如果您想要清除需要将其分配给变量的间隔,那么您可以轻松清除它 -

var myInterval = setInterval('$("#next").click()',10000);

然后像这样清楚 -

clearInterval(myInterval);

一旦清除了间隔,请确保将其重置并再次将其分配给变量,如果您希望它继续。

答案 2 :(得分:0)

<button id="start">Start</button>
<button id="stop">Stop</button>

var timer;
$("#start").click(function() {
    timer = setInterval(function(){$("#next").trigger("click");},"500");
});
$("#stop").click(function() {
    clearInterval(timer);
});