UNN4MED
@UNN4MED
Битрикс разработчик

Почему не правильно работает слайдер?

Писал слайдер с применением js из видео, всё вроде соответствует с первоисточником, но при нажатий на стрелку вправо, сначала меняется текст, после второго нажатия меняется изображение и текст. Почему-то класс вставляется для сперва текста. Если нажать стрелку влево, то меняется первое изображение на второе, за место третьего, а текст меняется корректно.
Также не работают точки, на них вообще не добавляются активные классы.
Сайт:
https://talantrys.github.io/Scake/
GitHub:
https://github.com/TalantRys/Scake
Slick Slider не использую, забыл удалить
Код слайдера в script.js:
//СЛАЙДЕР
//-ИЗОБРАЖЕНИЯ
const sliderImage = document.querySelector('.slider__image');
const slides = sliderImage.getElementsByTagName('img');
var i = 0;

function prevSlide() {
  slides[i].classList.remove('active');
  i = (i - 1 + slides.length) % slides.length;
  slides[i].classList.add('active');
}
function nextSlide() {
  slides[i].classList.remove('active');
  i = (i + 1) % slides.length;
  slides[i].classList.add('active');
}
//-ТЕКСТ
const sliderBody = document.querySelector('.slider__body');
const slidesText = sliderBody.getElementsByClassName('slider__text');
var j = 0;

function prevSlideText() {
  slidesText[j].classList.remove('active');
  j = (j - 1 + slidesText.length) % slidesText.length;
  slidesText[j].classList.add('active');
}
function nextSlideText() {
  slidesText[j].classList.remove('active');
  j = (j + 1) % slidesText.length;
  slidesText[j].classList.add('active');
}
//-ТОЧКИ
const sliderControls = document.querySelector('.slider__controls');
const dots = sliderControls.querySelectorAll('.slider__dots');
var sliderNav = function (manual) {
  dots.forEach((dot) =>{
    dot.classList.remove('active');
  });
  slides.forEach((slide)=>{
    slide.classList.remove('active');
  });
  slidesText.forEach((text)=>{
    text.classList.remove('active');
  })
  dots[manual].classList.add('active');
  slides[manual].classList.add('active');
  slidesText[manual].classList.add('active');
}
dots.forEach((dot, k) => {
  dot.addEventListener('click', () => {
    sliderNav(k);
  });
});
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы