1 回答

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個贊
在 JavaScript 中,你不能在不迭代的情況下對多個元素進(jìn)行更改。所以,你必須animateValue為每個.value元素調(diào)用函數(shù)。start通常為零,所以你可以把它作為最后一個參數(shù),并給它默認(rèn)值。而代替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>
添加回答
舉報