Задать вопрос
Megalexandros
@Megalexandros
Задаю самые тупые вопросы.

Как анимировать элементы поочередно?

let number = document.querySelectorAll(".num");

function countNumber(item, num) {
    var count = 0;
    var interval = setInterval(function () {
      if (count === num) {
        clearInterval(interval);
      } else {
        count++;
      }
      item.innerHTML = count;
    }, 20);
}
let numbers = [];
for (let i = 0; i < number.length; i++) {
  numbers.push(parseInt(number[i].innerHTML));
  countNumber(number[i], numbers[i])
}

в данный код надо внести изменения, что бы классы с тегом .num анимировались не сразу (их там 3) а по очереди.
Help please)
  • Вопрос задан
  • 113 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
<div data-value="69"></div>
<div data-value="187"></div>
<div data-value="666"></div>

function animateValue(elem) {
  return new Promise(resolve => {
    const endValue = +elem.dataset.value;
    let currValue = 0;

    const interval = setInterval(() => {
      if (++currValue === endValue) {
        clearInterval(interval);
        resolve();
      }

      elem.innerText = currValue;
    }, 20);
  });
}


Array
  .from(document.querySelectorAll('[data-value]'))
  .reduce((p, c) => p.then(() => animateValue(c)), Promise.resolve());

https://jsfiddle.net/L9f1a2u5/1/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы