У меня есть код JavaScript, который запускает анимацию CSS. Он работает нормально, но мне нужно обновить браузер, чтобы снова запустить его. Как я могу изменить свой код, чтобы он запускался каждый раз при нажатии кнопки?
Ниже приведен код, который я использовал.
document.getElementById('LogoContainer').addEventListener('click',function() {
var c = document.getElementsByClassName('logo-rec');
for (var i = 0; i < c.length; i++) {
c[i].classList.add('logo-animate');
}
})
<button id = "LogoContainer">
<div class = "logo-rec"></div>
</button>
CSS
.logo-animate {
animation-name: MoveLeft;
animation-duration: 3s;
}
@keyframes MoveLeft {
0% { transform: translatex(0px) }
50% { transform: translatex(-15px) }
100% { transform: translatex(35px) }
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Проблема в том, что после того, как анимация запустилась, система думает - ну, я ее запустила, поэтому она не запускается снова при нажатии (название анимации остается прежним).
Итак, этот фрагмент добавляет прослушиватель событий для события animationend, и когда это происходит, он удаляет настройку класса, вызвавшую анимацию, поэтому, когда вы снова нажимаете, это новая настройка класса, и анимация повторяется.
document.getElementById('LogoContainer').addEventListener('click', function() {
var c = document.getElementsByClassName('logo-rec');
for (var i = 0; i < c.length; i++) {
c[i].classList.add('logo-animate');
c[i].addEventListener('animationend', function() {
this.classList.remove('logo-animate');
});
}
}).logo-animate {
animation-name: MoveLeft;
animation-duration: 3s;
}
@keyframes MoveLeft {
0% {
transform: translatex(0px)
}
50% {
transform: translatex(-15px)
}
100% {
transform: translatex(35px)
}
}<button id = "LogoContainer">
<div class = "logo-rec">abcd</div>
</button>
Хаворт, спасибо большое. Это работает отлично!