Cannot read property 'classList' of undefined

97
22 января 2021, 18:20

Использую код для слайдера! Слайдер работает, но на других страница в консоле ошибка (Cannot read property 'classList' of undefined), помогите пожалуйста исправить

код слайдера

var slideIndex = 1;
// Функция увеличивает индекс на 1, показывает следующй слайд
function plusSlide() {
    showSlides(slideIndex += 1);
}
// Функция уменьшяет индекс на 1, показывает предыдущий слайд
function minusSlide() {
    showSlides(slideIndex -= 1);  
}
// Устанавливает текущий слайд
function currentSlide(n) {
    showSlides(slideIndex = n);
}
var element = document.getElementsByClassName('products-slider-wrapper');
    showSlides(slideIndex);
    // Основная функция слайдера 
    function showSlides(n) {
        var i;
        var slides = document.getElementsByClassName("products-slider-wrapper-item");
        var dots = document.getElementsByClassName("products-slider-dots-item");

        if (n > slides.length) {
          slideIndex = 1;
        }
        if (n < 1) {
            slideIndex = slides.length
        }
        for (i = 0; i < slides.length; i++) {
            slides[i].classList.add("hidden-slide");
        }
        for (i = 0; i < dots.length; i++) {
            dots[i].className = dots[i].className.replace(" products-slider-dots-active", "");
        }
        slides[slideIndex - 1].classList.remove("hidden-slide");
        dots[slideIndex - 1].className += " products-slider-dots-active";
    }
Answer 1

На других страницах нет таких элементов

var slides = document.getElementsByClassName("products-slider-wrapper-item");
var dots = document.getElementsByClassName("products-slider-dots-item");

Поэтому при обращении к несуществующим элементам возникает ошибка

slides[slideIndex - 1].classList.remove("hidden-slide");
dots[slideIndex - 1].className += " products-slider-dots-active";
Answer 2

В начало функции добавьте проверку на наличие слайдера

if ($('.products-slider-wrapper-item').length === 0) return;
READ ALSO
Как, используя wpf mvvm, нарисовать таблицу

Как, используя wpf mvvm, нарисовать таблицу

Зашла в тупикМне нужно при нажатии кнопки нарисовать такую таблицу:

136
Прием подключений из WPF

Прием подключений из WPF

Задача: принять подключение извне, спросить через MessegeBox принять ли подключение и, в случее утвердительного ответа, открыть другое окно

135
Синхронизация вставки в Redis

Синхронизация вставки в Redis

Имеется N: N > 1 клиентов расположенных на разных серверахВ таком сценарии возможна ситуация когда множество клиентов пытаются записать...

113
Консоль выводит NaN

Консоль выводит NaN

При вводе некоторых чисел например 4,5 выводит Nan все перепробовал и на -1 домножал и по модулю брал все-ровно NaN

123