为什么 JavaScript 运行 动画不会在一个简单的计数器中重复出现?
Why doesn't JavaScript run animation repeatedly in a simple counter?
如果这是一个微不足道的问题,我很抱歉,但我正在尝试使用 HTML 和 JS 设计一个简单的计数器。它有一个输入表单,每当用户键入一个数字并提交时,div 就会以 1 秒的间隔从 0 计数到该数字(使用 setInterval)。问题是我希望每次更新数字时,它都应该带有“弹跳”动画。我在这里附上文件。出于某种原因,我的代码只跳一次(当数字 1 出现时),之后就不会跳了。请建议我可以在这段代码中使用简单的 JavaScript 进行简单的调整。在此先感谢您的指导
function f() {
var i = 0;
var num = document.getElementsByTagName('input')[0].value
num=parseFloat(num);
var id=setInterval(function(){
i++;
document.getElementsByTagName('h2')[0].innerText=i;
document.getElementsByTagName('h2')[0].style.animation="bounce 0.2s"
if (i==num) {
alert("over!!")
clearInterval(id);
return;
}},1000)
}
var button = document.getElementsByTagName('button');
button[0].addEventListener('click',f)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
input {
border: 2px solid black;
}
div {
height: 100px;
width: 100px;
margin: auto;
border: 2px solid black;
display: flex;
justify-content: center;
align-items: center;
}
@keyframes bounce {
from{
}
to {
bottom: 10px;
}
}
</style>
</head>
<body>
<input type="text" name="counter">
<br>
<button type="submit">Submit</button>
<div><h2 style="position:relative;">0</h2></div>
<script type="text/javascript" src="script2.js"></script>
</body>
</html>
最简单的解决方案是监听动画结束并将其设置回 none:
document.getElementsByTagName('h2')[0].onanimationend = function(){
this.style.animation = 'none'
}
如果这是一个微不足道的问题,我很抱歉,但我正在尝试使用 HTML 和 JS 设计一个简单的计数器。它有一个输入表单,每当用户键入一个数字并提交时,div 就会以 1 秒的间隔从 0 计数到该数字(使用 setInterval)。问题是我希望每次更新数字时,它都应该带有“弹跳”动画。我在这里附上文件。出于某种原因,我的代码只跳一次(当数字 1 出现时),之后就不会跳了。请建议我可以在这段代码中使用简单的 JavaScript 进行简单的调整。在此先感谢您的指导
function f() {
var i = 0;
var num = document.getElementsByTagName('input')[0].value
num=parseFloat(num);
var id=setInterval(function(){
i++;
document.getElementsByTagName('h2')[0].innerText=i;
document.getElementsByTagName('h2')[0].style.animation="bounce 0.2s"
if (i==num) {
alert("over!!")
clearInterval(id);
return;
}},1000)
}
var button = document.getElementsByTagName('button');
button[0].addEventListener('click',f)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
input {
border: 2px solid black;
}
div {
height: 100px;
width: 100px;
margin: auto;
border: 2px solid black;
display: flex;
justify-content: center;
align-items: center;
}
@keyframes bounce {
from{
}
to {
bottom: 10px;
}
}
</style>
</head>
<body>
<input type="text" name="counter">
<br>
<button type="submit">Submit</button>
<div><h2 style="position:relative;">0</h2></div>
<script type="text/javascript" src="script2.js"></script>
</body>
</html>
最简单的解决方案是监听动画结束并将其设置回 none:
document.getElementsByTagName('h2')[0].onanimationend = function(){
this.style.animation = 'none'
}