[英]Image Slider not working because of wrong delay Javascript
下面是我的图像 slider 的代码:
var slideIndex = 0;
var slides = document.getElementsByClassName("mySlides");
showSlides();
function showSlides() {
var i;
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
slideIndex++;
if (slideIndex> slides.length) {slideIndex = 1}
slides[slideIndex-1].style.display = "block";
setTimeout(showSlides, 3000); // Change image every 5 seconds
}
function currentSlide(no) {
var i;
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
slideIndex = no;
slides[no-1].style.display = "block";
}
function plusSlides(n) {
var newslideIndex = slideIndex + n;
if(newslideIndex < 4 && newslideIndex > 0){
currentSlide(newslideIndex);
}
}
显示图像后,每张图像之间会有 3 秒的延迟。 我有能力点击一个按钮来获得一个特定的图像。 这里发生的是图像之间的延迟不会重新启动,有时我会在半秒内显示 2 张图像而不是 3 张。
我怎样才能解决这个问题?
<button class="w3-button w3-black w3-display-left" onclick="plusSlides(-1)">❮</button>
<button class="w3-button w3-black w3-display-right" onclick="plusSlides(1)">❯</button>
<br>
<div style="text-align:center">
<span class="dot" onclick="currentSlide(1)"></span>
<span class="dot" onclick="currentSlide(2)"></span>
<span class="dot" onclick="currentSlide(3)"></span>
这些是我的按钮。
即使您单击您拥有的按钮,从您的showSlides
function 调用的超时将继续自行滴答。 您必须在单击时手动重置它。 为此,您需要执行以下操作:
slideIndex
将保存超时参考。 showSlides
和currentSlide
都需要访问此变量:var timeout = null;
function showSlides() {
// rest of the code...
timeout = setTimeout(showSlides, 3000);
}
function currentSlide(no) {
// rest of the code...
clearTimeout(timeout);
timeout = setTimeout(showSlides, 3000);
}
这样,超时将一直运行,直到达到 3 秒或单击一个按钮,这也将重置它并触发另一个循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.