這裏是小提琴https://jsfiddle.net/8p2jjr18/animationend聽衆和setTimeout的
的想法是做一個漸強和香草JS推薦的淡出旋轉。問題是,當函數在setTimeout的第四次運行時,在選擇第一和後續元素沒有得到.fade
類。相反,.hidden
類被馬上(而不是等待被應用的.fade
類的類來結束動畫)應用,它攪亂了整個畫面。
我試圖把break;
到for
循環,而不是if
語句結束的結束(見下面的例子),但完全打破一切(僅僅只有一個迭代發生),我不知道爲什麼。
function rotateTestimonials() {
for (var i = 0; i < testimonials.length; i++) {
if (testimonials[i].className === "testimonial show") {
testimonials[i].className = "testimonial fade";
testimonials[i].addEventListener("animationend", function() {
testimonials[i].className = "testimonial hidden";
if (i + 1 !== testimonials.length) {
testimonials[i+1].className = "testimonial show";
}
else {
testimonials[0].className = "testimonial show";
}
}, false);
};
break;
};
}
所以,球員,我有兩個問題:
1)爲什麼我不能放置break
指令到for
循環的結束?
2)爲什麼函數在第四次及以後的setTimeout
循環中不能正常工作?
謝謝!
非常感謝您提供了一個無可挑剔的答案和簡潔明瞭的代碼! – Dronich