真的很抱歉,如果你已经和我一起过去了。好消息:我取得了进步。坏消息:它的进展很糟糕。
我有一个从某个数字开始计算的函数。这是一个很大的数字,我需要在正确的位置插入逗号。这是我放在一起的代码。它首先工作,但然后显示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 :(得分:0)
当你调用addCommas时,你会返回一个String,它很好地为人类格式化,但对++
之类的东西很糟糕。您需要跟踪和修改起始变量,并且只在必要时转换为字符串:
var f=function(){
jTarget.text(addCommas(start));
if(start==end)
{
clearInterval(intervalId);
if(callback)
{
callback();
}
}
++start;
}
答案 1 :(得分:0)
问题来自于在数字中添加逗号。在将数字放入.text()函数之前,只需将数字转换为逗号字符串: