I m trying to create multiples counters on a same page using javascript and setInterval.
The problem in my code is it only update for the last element.
var newvalue;
var counterworld = document.getElementsByClassName('counterworld');
for (var i = 0; i < counterworld.length; ++i) {
var item = counterworld[i];
var counterId = setInterval(function () { item.innerHTML = i + '=>' + countUp(item.getAttribute('data-start'), item.getAttribute('data-increment')) }, 100);
}
function countUp(start, increment) {
if (newvalue == null) {
newvalue = parseFloat(start) + parseFloat(increment);
}
else {
newvalue = newvalue + parseFloat(increment);
}
if (increment < 1) {
return newvalue.toLocaleString(undefined, { maximumFractionDigits: 2 });
}
else {
return newvalue.toLocaleString(undefined, { maximumFractionDigits: 0 });
}
}
<span class="counterworld" data-increment="1.5" data-start="100">100</span><br />
<span class="counterworld" data-increment="1.28600823045268" data-start="19216060382458.4">19216060382458.4</span><br />
<span class="counterworld" data-increment="0.0317532880531423" data-start="4629347058.7918">4629347058.7918</span>