这是我的代码:
function flipCounter(){
for(j=0; j<heights.length; j++){
counter = 0;
/* setInterval(function(){ */
if(counter < heights[j]){
counter = counter + 1;
$('.skill-table #bars').find('td').eq(j).find('label').html(counter+'%');
}
/* },10); */
}
}
目标是每10毫秒更新一个标签内的值,直到该值达到存储在数组高度[] 中的值。正如你所看到的,我已尝试使用setInterval循环,但这样做,高度变为未定义
整个函数可以使用while循环:
while(counter < heights[j]){
counter = counter + 1;
$('.skill-table #bars').find('td').eq(j).find('label').html(counter+'%');
}
完全省略 setIntveral 。但这样标签中的值会立即发生变化。但我确实试图把它推迟到10毫秒。在while循环中添加 setTimeout 是不行的。
有什么建议吗?
答案 0 :(得分:3)
关闭变量
function flipCounter(){
for(j=0; j<heights.length; j++){
(function(idx){
var counter = 0;
setInterval(function(){
if(counter < heights[idx]){
counter = counter + 1;
$('.skill-table #bars').find('td').eq(idx).find('label').html(counter+'%');
}
},10);
})(j)
}
}