2013-08-23 65 views
0

是我的代碼:jQuery的傳遞全局變量成的setInterval()循環

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);     */ 
    } 
} 

的目標是,直到值達到一個存儲陣列中來更新標籤內的值每10milliseconds 高度[] 。正如你所看到的,我已經試過用的setInterval循環,但這樣做時,高度去不確定

整個函數可以用while循環工作:

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

省略在setIntveral所有。但通過這種方式,標籤中的值立即發生變化。但我確實想把它延遲到10ms。在while循環中添加一個setTimeout是不行的。

有什麼建議嗎?

回答

2

封閉的可變

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) 
    } 
}