0

这是我的代码:

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 毫秒更新一次标签内的值,直到该值达到存储在数组heights[]中的值。如您所见,我尝试使用 setInterval 循环,但是这样做,高度未定义

整个函数可以使用 while 循环:

while(counter < heights[j]){
    counter = counter + 1;
    $('.skill-table #bars').find('td').eq(j).find('label').html(counter+'%');
}

完全省略setIntveral。但是这样标签中的值会立即改变。但我确实试图将其延迟到 10 毫秒。在 while 循环中添加setTimeout是不行的。

有什么建议么 ?

4

1 回答 1

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)
    }
}
于 2013-08-23T13:48:16.883 回答