Zaznaczę, że uczę się JS tym bardziej obiektowego
przerabiam slider, całość jest zrobiona na klasie z konstruktorem,
tak pokrótce pierwsza metoda generuje slider czyli:
- pobiera element który zamienimy na slider
- tworzy kontener(wrapper) dla slajdow
- pobiera elementy slajdów (dzieci wrappera)
- dodaje klase (slider__item) każdemu dziecku
następna metoda zmienia slidy, pokrótce dodaje klase active do aktualnego slidu:
changeSlide(index) { // petla po slajdach usuwająca klase active this.slides.forEach(slide => { slide.classList.remove("active"); slide.setAttribute("hidden", true); }); //dodanie tylko wykrytemu this.slides[index].classList.add("active"); this.slides[index].setAttribute("hidden", false); //aktualny slider przestawiany na wybrany this.currentSlide = index; }
Chciałbym dodać klase before i after tj. przed i po active, myślę zrobić to dość prosto na ifach

this.slides.forEach(slide => { slide.classList.remove("active"); slide.setAttribute("hidden", true); slide.classList.remove("before"); }); //dodanie tylko wykrytemu this.slides[index].classList.add("active"); this.slides[index].setAttribute("hidden", false); let last = this.slides.length - 1; // dodanie klas przed i po let tmp=this.slides[index]; if (tmp == 0 ) { this.slides[index + last].classList.add("before"); } else { this.slides[index - 1].classList.add("before"); } //aktualny slider przestawiany na wybrany this.currentSlide = index; }
Nie wiem dlaczego if tak działa, że pobiera tylko instrukcje z else? i faktycznie dodaje before ale dla slida 0 już nie.
Oczywiście w slidzie ją jeszcze metody prev, next, pagination.
Z góry dzięki za każdą pomoc.