Вложенная функция внутри функции цикла for | добавить/удалить класс | анимация ключевых кадров

привет, у меня есть цикл for, который считает от 1 до бесконечности, и я хотел бы изменить фон div и цвет «p» каждый раз, когда обновляется число. Это работает, когда я делаю цикл один раз (означает для первого изменения, но не ром анимации во второй раз. (числа постоянно обновляются)

   <div class = "section" id = "box">
      <p id = "demo">23375</p>
  </div>

мой CSS

.section {
  background-color: blue;
  margin: 1rem;
}

.pargraph-active,
.colorTransition {
  animation: colorTransition 2s ease-in-out;
}

@keyframes colorTransition {
  0% {
    background-color: blue;
  50% {
    color: white
    background-color: red;
  }
  100% {
    background-color: blue;
  }
}

и JS

let box = document.querySelector('#box');
let demo = document.querySelector('#demo');

function runAnimation() {
  box.classList.add('colorTransition');
  demo.classList.add('pargraph-active');
  console.info(`Animation started`);
}

function initialState() {
  box.classList.remove('colorTransition');
  demo.classList.remove('pargraph-active');
  console.info(`Initial State`);
}

(function theLoop(i) {
  setTimeout(
    function() {
      demo.innerHTML = i;
      if (i++) {
        theLoop(i);
      }
      runAnimation();
    },
    2000,
    initialState()
  );
})(1);
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
29
1

Ответы 1

У вас есть ошибка в синтаксисе @keyframe, вам не хватает }, а также ; после цвета.

Я исправил это, и теперь это работает, но я предлагаю вам использовать вместо этого только css.

что-то вроде этого будет делать

animation: colorTransition 2s ease-in-out infinite; 

let box = document.querySelector('#box');
let demo = document.querySelector('#demo');

function runAnimation() {
  box.classList.add('colorTransition');
  demo.classList.add('pargraph-active');
  console.info(`Animation started`);
}

function initialState() {
  box.classList.remove('colorTransition');
  demo.classList.remove('pargraph-active');
  console.info(`Initial State`);
}

(function theLoop(i) {
  setTimeout(
    function() {
      demo.innerHTML = i;
      if (i++) {
        theLoop(i);
      }
      runAnimation();
    },
    2000,
    initialState()
  );
})(1);
.section {
  margin: 1rem;
  background-color: blue;
}

.pargraph-active,
.colorTransition {
  animation: colorTransition 2s ease-in-out;
}

@keyframes colorTransition {
  0% {
    background-color: blue;
    }
  50% {
    color: white;
    background-color: red;
  }
  100% {
    background-color: blue;
  }
}
  <div class = "section " id = "box">
      <p id = "demo">23375</p>
  </div>

эй, это не проблема, потому что теперь вы создали бесконечную анимацию, которая не вызывается изменением числа, а происходит сама по себе. Будет легче увидеть, когда вы оставите анимацию на 2 секунды, а затем дадите 5 секунд. задержка для функции. Это не будет синхронно.

Wiola 23.02.2019 18:52

Извините, я должен был добавить это в качестве примера, а не включать в css :), но я все равно исправил вашу проблему, поэтому вы должны пометить это как ответ :)

Alen.Toma 23.02.2019 20:06

Другие вопросы по теме