Вам просто нужно сделать некоторые вычисления для дельты, чтобы увеличить число. Прямо сейчас следующее делает 33 мс, что составляет около 30 кадров в секунду анимации:
Обратите внимание, что нет гарантии для delay
, переданного setInterval
. Даже 0
означает каждый следующий цикл событий для setInterval
(или следующий цикл событий для setTimeout
), и на самом деле это не "немедленно".
let startNum = 0,
endNum = 7000000,
nSecond = 2,
resolutionMS = 33,
deltaNum = (endNum - startNum) / (1000 / resolutionMS) / nSecond;
function countIni() {
var handle = setInterval(() => {
var x = startNum.toLocaleString(undefined, {
minimumFractionDigits: 0,
maximumFractionDigits: 0
});
document.querySelector('#number').innerHTML = x.toString();
// if already updated the endNum, stop
if (startNum >= endNum) clearInterval(handle);
startNum += deltaNum;
startNum = Math.min(startNum, endNum);
}, resolutionMS);
}
countIni();
<div id="number"></div>