gpt4 book ai didi

Javascript setInterval 适用于所有元素(多个计数器)

转载 作者:行者123 更新时间:2023-12-01 03:29:13 24 4
gpt4 key购买 nike

我正在尝试使用 javascript 和 setInterval 在同一页面上创建多个计数器。

我的代码中的问题是它只更新最后一个元素。

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>

最佳答案

lexical scopingvar i 更改为 let i,将 var item 更改为 let item :

var counterworld = document.getElementsByClassName('counterworld');

for (let i = 0; i < counterworld.length; ++i) {
let item = counterworld[i];
let value = parseFloat(item.getAttribute('data-start'));
let increment = parseFloat(item.getAttribute('data-increment'));

setInterval(function() {
value += increment;

item.innerHTML = i + '=>' + value.toLocaleString(undefined, {
maximumFractionDigits: increment < 1 ? 2 : 0
});
}, 100);
}
<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>

更新

我还修复了你的代码。我希望您有意产生上述行为。

关于Javascript setInterval 适用于所有元素(多个计数器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44634834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com