1 回答
![?](http://img1.sycdn.imooc.com/533e4c7b00013f3c02400205-100-100.jpg)
TA贡献1866条经验 获得超5个赞
在 JavaScript 中,你不能在不迭代的情况下对多个元素进行更改。所以,你必须animateValue为每个.value元素调用函数。start通常为零,所以你可以把它作为最后一个参数,并给它默认值。而代替innerHTML,利用innerText。两者都会起作用,但它们有自己的作用。
function animateValue(item, duration, start = 0) {
var end = item.innerText.replaceAll(",", "").trim();
var range = end - start;
var increment = (range / (duration / 10));
if(end < start){
increment *= -1;
}
var current = start;
var stepTime = 1;
var timer = setInterval(function() {
current += Math.ceil(increment);
item.innerText = current;
if (current >= end) {
item.innerText = end;
clearInterval(timer);
}
}, stepTime);
}
document.querySelectorAll('.value').forEach((item)=>{
animateValue(item, 3000);
});
.value {
font-size: 50px;
}
<div class="value">244</div>
<div class="value">1,624</div>
<div class="value">1,100,244</div>
添加回答
举报