我在執行setInterval時遇到問題。我創建了一個滑塊,其中setInterval每隔幾秒處理一個函數。在幾分鐘和幾輪執行setInterval之後,我注意到了一個額外的延遲。 請建議這裏似乎是什麼問題?SetInterval在執行多輪執行後會產生延遲
$(document).ready(function() {
var totalItems = $('.sliderItem', '#slider').length;
var currentIndex = $('.itemActive').index() + 1;
var slideTime = 3000;
function goNext (e) {
$('.sliderItem').eq(e).fadeOut(500);
$('.welcomeBox > .welcomeText1', '.sliderItem').eq(e).hide(500);
$('h1', '.sliderItem').eq(e).hide(500);
$('h2', '.sliderItem').eq(e).hide(500);
if(e == totalItems - 1) {
e = 0;
} else {
e++;
};
$('.sliderItem').eq(e).fadeIn(400);
$('h1', '.sliderItem').eq(e).delay(800).show(400);
$('h2', '.sliderItem').eq(e).delay(500).show(400);
$('.welcomeBox > .welcomeText1', '.sliderItem').eq(e).delay(300).show(400);
currentIndex = e;
};
function loader() {
$('.loader').animate({"width":"100%"}, slideTime - 199);
$('.loader').animate({"opacity":"0"}, 199);
$('.loader').animate({"width":"0%"}, 0);
$('.loader').animate({"opacity":"1"}, 0);
};
function autoPlay (e){
timer = setInterval(function() {
loader();
goNext(e - 1);
console.log(e);
if(e == totalItems) {
e = 1;
} else {
e++;
};
currentIndex = e;
}, slideTime);
};
autoPlay(currentIndex);
});
https://codepen.io/Sizoom/pen/ayjNog
你說的是「額外的延遲」。你的意思是它突然間隔更長的時間間隔?或者你的意思是說它隨着時間的推移會逐漸增加,所以幾分鐘後它就不再處於「同步」狀態了? –
我看到你的演示,如果問題是指示條不與滑塊同步,這是正常的......你應該在指示條的末端用一個事件驅動滑塊....類似那樣的 – sabotero