Вопрос о слайдере

let imgs = document.querySelectorAll(".slider .slide img");
    let current = 0;


    setInterval(slider, 3000)

    function slider() {

        for (let i = 0; i < imgs.length; i++) {
            imgs[i].classList.add('opacity0');
        }
        imgs[current].classList.remove("opacity0");

        if (current+1 == imgs.length) {
            current = 0;
        }
        else {
            current++;
        }

    }

Есть вот такой простенький код, вопрос, почему if (current+1 == imgs.length) а не current == imgs.length Ведь нам нужно обнулить счетчик, когда он достиг длины масива с картинками, почему же мы пишем +1?? никак не пойму


Ответы (1 шт):

Автор решения: Сергей Мишин

Вообще правильно будет не

if (current+1 == imgs.length) 

а

if (current == imgs.length - 1) 

Потому что это сразу покажет почему. Да и надпись такого рода стандартная.

А всё потому, что массив начинается с нуля. Поэтому imgs.length будет показывать на один элемент больше, чем есть на самом деле.


И упростите код, избавьтесь от лишнего else:

...
current++;

if (current == imgs.length - 1) 
    current = 0; 
...
→ Ссылка