clearInterval只能运行一次

clearInterval只能运行一次

我只是学到了这一点,所以我会尽力解释得尽可能清楚。

我有一个循环的功能。我要完成的工作是,将某些内容悬停在循环上时停止,然后在光标离开时再次开始。这似乎正常工作,但是如果我将鼠标悬停离开,然后再次悬停,动画将继续循环播放。最糟糕的是,如果我两次移入/移出两次循环间隔,则更新间隔,因此在设定时间内循环两次。

无论如何,这是我正在使用的代码:

var transition_delay = "3000";

function next_image(){
    var current_eq = $('ul#triggers li.current_trigger').index();

    if (current_eq == li_count) { //if this is the last image in the array
        $triggers.removeClass("current_trigger").eq(0).addClass("current_trigger"); //removes current and adds it to next
        $displays.fadeOut("slow").eq(0).fadeIn("slow"); //fades out then in next display
    }
    else { //if not last image
        $triggers.removeClass("current_trigger").eq(current_eq + 1).addClass("current_trigger"); //removes current class and adds it to next
        $displays.fadeOut("slow").eq(current_eq + 1).fadeIn("slow"); //fades out then next display in
    }
};

$triggers.hover(
    function(){ //in
        console.log("clearing");
        clearInterval(next_image_interval);
    },
    function(){ //out
        console.log("starting");
        sliderIntervalID = setInterval(function(){next_image();},,transition_delay);
});

next_image_interval = setInterval(function(){
next_image();
}, transition_delay);

最佳答案

在悬停中,您正在执行以下操作:

sliderIntervalID = setInterval(function(){next_image();},,transition_delay);


但您正在清除:

clearInterval(next_image_interval);


sliderIntervalID更改为next_image_interval,应该可以正常工作。

关于javascript - JavaScript clearInterval只能运行一次?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9441150/

10-11 20:55