Вопрос о слайдере
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;
...