2011-08-19 40 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; 
}