我有以下代碼:運行在超時循環功能
// After 8 seconds change the slide...
var timeout = setTimeout("changeSlide()", 8000);
$('div.slideshow').mouseover(function() {
// If the user hovers the slideshow then reset the setTimeout
clearTimeout(timeout);
});
$('div.slideshow').mouseleave(function() {
clearTimeout(timeout);
var timeout = setTimeout("changeSlide()", 8000);
});
我希望發生的是使函數changeSlide運行每8秒鐘一個循環,除非你把光標移動幻燈片股利。當他們刪除光標,然後再次超時!
然而循環只發生一次,懸停不會停止超時或再次啓動它:/
編輯:
這個循環偉大的,但上落徘徊導致函數運行多個次:
// After 8 seconds change the slide...
var timeout = setInterval(changeSlide, 2000);
$('div.slide').mouseover(function() {
// If the user hovers the slideshow then reset the setTimeout
clearInterval(timeout);
});
$('div.slide').mouseleave(function() {
clearInterval(timeout);
var timeout = setInterval(changeSlide, 2000);
});
酷我已經根據你的答案改變了代碼,但它仍然沒有循環超時? – Cameron 2012-04-05 15:23:40
關鍵是在每個changeSlide結束時再次調用setTimeout,它將排隊等待下一個更改。你也可以使用setInterval,重複使用,而不是一次 – Matt 2012-04-05 15:25:02