Hỏi cách để reset slideshow autoplay time khi click dot

Mọi người cho mình xin một code autoplay như setTimeout() hoặc setInterval() để có thể chạy và khi clicked vào dot thì nó cũng tự reset lại time chạy setTimeout() với, ví dụ mình đặt là setTimeout(function,3000), trước khi click vào dot thì nó đã đếm được 2s và sau khi clicked thì nó sẽ reset lại time 3s như lúc ban đầu.

let slideIndex = 1; 
showSlides(slideIndex);

function currentSlide(n){ 
   showSlides(slideIndex = n)
}       

function showSlides(n){
	let i; 
	let slides = document.getElementsByClassName("slide")
	let dots = document.getElementsByClassName("dot")
	if(n > slides.length) {  slideIndex = 1}
	if(n < 1) {slideIndex = slides.length}
	for(i = 0; i < slides.length; i++) {
        slides[i].style.display = "none"
	}
	for(i = 0; i < dots.length; i++){
		 dots[i].className = dots[i].className.replace(" active", "");
	}
	slides[slideIndex-1].style.display = "block"
	dots[slideIndex-1].className += " active";
}

Dùng hàm clearTimeout()clearInterval() để loại bỏ thời gian trước đó.

Gán slideIndex bằng 0 từ đầu luôn cho xong.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?