Я новичок в javascript программировании, и мне не ясно, как обрабатывается поток выполнения. Я использовал анимацию из «Анимации. css», чтобы создать программу для подбрасывания монеты. Проблема в том, что когда я go заставляю javascript добавить класс для анимации, он не запускается, и console.log выводит мне, что ни один класс не был добавлен. Можете ли вы помочь мне и заставить меня понять, почему? Спасибо заранее! ^^
Мой код здесь:
//variabili globali
//let clickNumber=0;
//HTML to JS
coinContainer = document.querySelector('.coin-container');
coin = document.querySelector('#coin');
//Events
coin.addEventListener('click',flipCoin);
//Funzioni
function flipCoin(event) {
console.log(event.target);
let head = "https://qph.fs.quoracdn.net/main-qimg-57e97e36918b359f28e86b8cbf567436.webp";
let tail = "https://qph.fs.quoracdn.net/main-qimg-9c81a54813716fccd8e3608ab2f51dcf";
scelta=Math.floor(Math.random() * 2);
if(scelta===0){
event.target.setAttribute('class','animated flip');
event.target.setAttribute('src',head);
console.log(event.target);
//wait a lil bit
for(let i=0;i>1000000000;i++){
//
}
event.target.setAttribute('class','');
console.log(event.target);
}
else{
event.target.setAttribute('class','animated flip');
event.target.setAttribute('src',tail);
console.log(event.target);
//wait a lil bit
for(let i=0;i>1000000000;i++){
//
}
event.target.setAttribute('class','');
console.log(event.target);
}
//clickNumber++;
}
/* ANIMATE.CSS */
.animated {
animation-duration: 1s;
animation-fill-mode: both;
}
.animated.infinite {
animation-iteration-count: infinite;
}
.animated.delay-1s {
animation-delay: 1s;
}
.animated.delay-2s {
animation-delay: 2s;
}
.animated.delay-3s {
animation-delay: 3s;
}
.animated.delay-4s {
animation-delay: 4s;
}
.animated.delay-5s {
animation-delay: 5s;
}
.animated.fast {
animation-duration: 800ms;
}
.animated.faster {
animation-duration: 500ms;
}
.animated.slow {
animation-duration: 2s;
}
.animated.slower {
animation-duration: 3s;
}
@media (print), (prefers-reduced-motion: reduce) {
.animated {
animation-duration: 1ms !important;
transition-duration: 1ms !important;
animation-iteration-count: 1 !important;
}
}
/* END ANIMATE CSS */
/* FLIP.CSS */
@keyframes flip {
from {
transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, -360deg);
animation-timing-function: ease-out;
}
40% {
transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
rotate3d(0, 1, 0, -190deg);
animation-timing-function: ease-out;
}
50% {
transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
rotate3d(0, 1, 0, -170deg);
animation-timing-function: ease-in;
}
80% {
transform: perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0)
rotate3d(0, 1, 0, 0deg);
animation-timing-function: ease-in;
}
to {
transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, 0deg);
animation-timing-function: ease-in;
}
}
.animated.flip {
backface-visibility: visible;
animation-name: flip;
}
/* END FLIP CSS */
/* MY STYLE */
body{
background: #555555;
}
#coin{
width: 21.5rem;
height: 21.5rem;
}
.coin-container{
display: flex;
justify-content: center;
align-content: center;
align-items: center;
margin-top:15vh;
}
/* END MY STYLE */
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<script src="moneta.js" defer></script>
<title>Document</title>
</head>
<body>
<div class="coin-container">
<img src="https://qph.fs.quoracdn.net/main-qimg-57e97e36918b359f28e86b8cbf567436.webp" id="coin">
</div>
</body>
</html>