javascript整数到字符串错误

时间:2011-08-19 21:41:31

标签: javascript string counter

真的很抱歉,如果你已经和我一起过去了。好消息:我取得了进步。坏消息:它的进展很糟糕。

我有一个从某个数字开始计算的函数。这是一个很大的数字,我需要在正确的位置插入逗号。这是我放在一起的代码。它首先工作,但然后显示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;
}

2 个答案:

答案 0 :(得分:0)

当你调用addCommas时,你会返回一个String,它很好地为人类格式化,但对++之类的东西很糟糕。您需要跟踪和修改起始变量,并且只在必要时转换为字符串:

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

答案 1 :(得分:0)

问题来自于在数字中添加逗号。在将数字放入.text()函数之前,只需将数字转换为逗号字符串:

http://jsfiddle.net/TT8BH/11/