Используйте clearInterval внутри вашего обратного вызова setInterval, чтобы каждый раз, когда вызывался обратный вызов, вы могли проверить, достиг ли новый счет ваш порог, и очистить таймер, если он это сделает.
Если вы проверите значение вне обратного вызова, логика не будет вызываться при каждом увеличении счетчика.
function animateValue(id) {
var obj = document.getElementById(id);
var current = parseInt(localStorage.getItem("lastCount")) || 10000;
var interval = null;
var maxCount = 1000;
var callback = function() {
var nextCount = current++;
if (nextCount === maxCount) {
clearInterval(interval);
}
localStorage.setItem("lastCount", nextCount);
obj.innerText = '$' + nextCount;
}
interval = setInterval(callback, 0.1);
}
Вот демоверсия:
let current = 0;
let interval = null;
const callback = () => {
let nextCount = current++;
console.log(nextCount);
if (nextCount === 5) {
clearInterval(interval);
}
}
interval = setInterval(callback, 100);