@rsoinvi

Javascript. Как по очереди(с задержкой) изменить свойство елемента?

Допустим хочу чтобы каждый элемент(elem) с задержкой изменил цвет на красный.
Мой нерабочий код:
<div class = "elem"></div>
<div class = "elem"></div>


let b  = document.querySelectorAll('.elem');
for (var i = 0; i < b.length; i++){
   setTimeout(function(){
      b[i].style.backgroundColor= "red";
   },1000)
}
  • Вопрос задан
  • 242 просмотра
Решения вопроса 2
@soledar10
html css3 js jquery
Ответ написан
Комментировать
Вариант с очищением стиля предыдущего элемента и возвратом в начало списка:
const list = document.querySelectorAll('.elem');
let pool = [...list];
let counter = 0;
animate();

function animate(index = 0) {
    setTimeout(() => {
        if (!pool.length) {
     	    pool = [...list];
            counter = 0;
        }
  	const current = pool.shift();
        list[index - 1] && (list[index - 1].style.backgroundColor = 'white');
  	current.style.backgroundColor = 'red';
        animate(++counter);
    }, 1000);
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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