Ускоряется Setinterval

176
31 декабря 2019, 14:50

Есть слайдер с переключением слайда через определенный промежуток времени. Сделал так чтобы при клике на кнопку перелистывания слайда таймер, обнулялся и счет начинался с 0. Проблема в том, что при каждом нажатии на кнопку слайдер ускоряется. Вот код.

var sliderImages = document.querySelectorAll(".sales-slaider");
var arrowLeft = document.querySelector(".arrow-left");
var arrowRight = document.querySelector(".arrow-right");
var current = 0;
// Clear all images
function reset() {
  for (var i = 0; i < sliderImages.length; i++) {
    sliderImages[i].style.display = "none";
  }
}
// Init slider
function initSlide() {
  myTimer = setInterval(function () {
    if (current === sliderImages.length - 1) {
      current = -1;
    }
    slideRight();
  }, 4000);
}
function startSlide() {
  reset();
  sliderImages[0].style.display = "block";
  initSlide();
}
// Show prev
function slideLeft() {
  reset();
  sliderImages[current - 1].style.display = "block";
  current--;
}
// Show next
function slideRight() {
  reset();
  sliderImages[current + 1].style.display = "block";
  current++;
}
// Left arrow click
arrowLeft.addEventListener("click", function () {
  if (current === 0) {
    current = sliderImages.length;
  }
  slideLeft();
  clearInterval(myTimer);
  initSlide();
});
// Right arrow click
arrowRight.addEventListener("click", function () {
  if (current === sliderImages.length - 1) {
    current = -1;
  }
  slideRight();
  initSlide();
});
startSlide();
Answer 1

Проблема решена.

arrowRight.addEventListener("click", function () { 
  if (current === sliderImages.length - 1) { 
      current = -1;  
  } 
  slideRight(); 
  initSlide(); 

Пропустил celarInterval(myTimer) между slideRight(); и initSlide();

READ ALSO
Создать переменную &#171;resultArray&#187; (массив)

Создать переменную «resultArray» (массив)

Создать переменную «resultArray» (массив)Создать переменные «first» = 1, «second» = 2, «senseOfLife» = 42

134
Вернуть массив к исходному виду VUE JS

Вернуть массив к исходному виду VUE JS

Есть переменная, содержащая в себе массив объектовПри клике на checkbox, объекты сортируются в зависимости от первой буквы в значении одного...

161
Парсинг даты из строки

Парсинг даты из строки

Как из такой строки можно извлечь дату?

187