Что бы одновременно останавливались и выводились числа с учетом языковой настройки такой код
function counterNumbers() {
const SELECTORS = {
wrapper: ".js-counter-numbers-wrapper",
numbers: ".js-counter-numbers",
number: ".js-counter-number",
};
const $wrappers = document.querySelectorAll(SELECTORS.wrapper);
if (!$wrappers.length) return;
const TIME_COUNT = 6000; // Время счета
function counter ($wrapper, timeCount) {
const $numbers = $wrapper.querySelectorAll(SELECTORS.numbers);
if (!$numbers.length) return;
const $numbersText = $wrapper.querySelectorAll(SELECTORS.number);
const endValues = [];
$numbers.forEach(($numberWrapper) => {
const endValue = parseInt($numberWrapper.dataset.number);
endValues.push (endValue);
})
const timeStart = performance.now();
const form = new Intl.NumberFormat();
function showNumbers (currentTime) {
let part = (currentTime - timeStart) / timeCount;
if (part > 1) part = 1;
for (let i = 0; i < $numbersText.length; i++) {
const value = Math.round( part * endValues[i]);
$numbersText[i].textContent = form.format(value);
}
if (part < 1) requestAnimationFrame(showNumbers);
}
requestAnimationFrame(showNumbers);
}
$wrappers.forEach(($wrapper) => {
counter ($wrapper, TIME_COUNT);
});
}