这里是小提琴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