Куда, что и за какое время надо выводить:
const el = document.querySelector('.block');
const min = 0;
const max = 100;
const time = 5000;
const delay = time / (max - min);
Выводим:
(function step(val) {
setTimeout(function() {
if (val <= max) {
el.textContent = val;
step(val + 1);
}
}, delay);
})(min);
или
const intervalId = setInterval(val => {
if (val[0] <= max) {
el.innerText = val[0];
if (++val[0] > max) {
clearInterval(intervalId);
}
}
}, delay, [ min ]);
или
(async function() {
for (let i = min; i <= max; i++) {
await new Promise(r => setTimeout(r, delay));
el.innerHTML = i;
}
})();