2011-08-19 41 views
-2

真的很抱歉,如果你已經與我一起了解了這一點。好消息是,我取得了進展。壞消息是:這是一個進步。javascript整數到字符串錯誤

我有一個功能,從一定數量的計數。這是一個很大的數字,我需要在正確的位置插入逗號。這是我放在一起的代碼。它工作在第一,但隨後顯示的NaN ...

http://jsfiddle.net/blackessej/TT8BH/7/

function createCounter(elementId,start,end,totalTime,callback) 
{ 
    var jTarget=jQuery("#"+elementId); 
    var interval=totalTime/(end-start); 
    var intervalId; 
    var current=addCommas(start)+''; 
    var f=function(){ 
     jTarget.text(current); 
     if(current==end) 
     { 
      clearInterval(intervalId); 
      if(callback) 
      { 
       callback(); 
      } 
     } 
     ++current; 
    } 
    intervalId=setInterval(f,interval); 
    f(); 
} 
jQuery(document).ready(function(){ 
    createCounter("counter",12714086,9999999999,10000000000000,function(){ 
     alert("finished") 
    }) 
}) 

function addCommas(str) { 
    var amount = new String(str); 
    amount = amount.split("").reverse(); 

    var output = ""; 
    for (var i = 0; i <= amount.length-1; i++){ 
     output = amount[i] + output; 
     if ((i+1) % 3 == 0 && (amount.length-1) !== i)output = ',' + output; 
    } 
    return output; 
} 
+0

的[數計數需要逗號,小數點]可能重複(http://stackoverflow.com/questions/7124793/number-counting-up-needs-commas-decimal-point) – jfriend00

回答

0

當你調用addCommas,你是返回一個字符串,很好地格式化爲人類,但可怕的東西像++。您需要跟蹤和修改啓動變量,並在必要時僅轉換爲字符串:

var f=function(){ 
    jTarget.text(addCommas(start)); 
    if(start==end) 
    { 
     clearInterval(intervalId); 
     if(callback) 
     { 
      callback(); 
     } 
    } 
    ++start; 
}