我剛剛瞭解到這一點,所以我會盡可能清楚地解釋它。JavaScript 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);
懸停處理程序中的雙逗號(在transition_delay之前)...? – cHao 2012-02-25 04:14:02
'sliderIntervalID = setInterval'可能是'next_image_interval'? – Cheery 2012-02-25 04:14:24
順便說一句,就這麼說,'function(){next_image();}'可以在這裏用'nextImage'代替(例如:'setInterval(next_image,transition_delay);')。函數包裝對於調用一堆東西和/或擴展範圍等是很好的,但在這裏並不需要(你所要做的只是調用一個函數)。 – cHao 2012-02-25 04:20:48