2015-04-17 68 views
2

标题可能不是正确的,对此感到抱歉。给设置区间计数器值添加逗号

我正在尝试为网站制作一个livecounter,它的想法是显示每秒增加的假数字。我有这个迄今为止

var START_DATE = new Date("November 27, 2014 13:30"); // put in the starting date here 
 
var INTERVAL = 1; // in seconds 
 
var INCREMENT = 2; // increase per tick 
 
var START_VALUE = 901; // initial value when it's the start date 
 
var count = 0; //finally this shit is working 
 

 
window.onload = function() 
 
{ 
 
var msInterval = INTERVAL * 1000; 
 
var now = new Date(); 
 
count = parseInt((now - START_DATE)/msInterval) * INCREMENT + START_VALUE; 
 
document.getElementById('counter').innerHTML = count; 
 
setInterval("count += INCREMENT; document.getElementById('counter').innerHTML = count;", msInterval); 
 
} 
 
<div id="counter"></div>

这是显示了一些像“24350919”提高每一秒,我想将其转换为24350919。我尝试了parseFloat,但我无法使它工作。

有人能帮我一个忙吗?谢谢!

+0

使用'.toLocaleString()' –

+0

如果你不想依赖于用户的浏览器的定位,并希望显示了相同的模式,你可以使用这样的事情'“24358703”.match(/ \ d {1,3}/g).join(“,”)'但我不知道如何修正你的模式的正则表达式。 – DontVoteMeDown

+0

是的,但是如果我这样做,每次刷新浏览器时都会增加相同的数字,我希望每天都会显示一个不断增加的数字,直到永远。谢谢! – CrazyF8ck

回答

1

编辑: -

var START_DATE = new Date("November 27, 2014 13:30"); // put in the starting date here 
 
var INTERVAL = 1; // in seconds 
 
var INCREMENT = 2; // increase per tick 
 
var START_VALUE = 901; // initial value when it's the start date 
 
var count = 0; //finally this shit is working 
 

 

 
window.onload = function() { 
 
    var msInterval = INTERVAL * 1000; 
 
    var now = new Date(); 
 
    count = parseInt((now - START_DATE)/msInterval) * INCREMENT + START_VALUE; 
 
    document.getElementById('counter').innerHTML = addCommas(count); 
 
    setInterval("count += INCREMENT; document.getElementById('counter').innerHTML = addCommas(count);", msInterval); 
 
} 
 

 
function addCommas(myStr) 
 
{ 
 
    myStr += ''; 
 
    var x = myStr.split('.'); 
 
    var x1 = x[0]; 
 
    var x2 = x.length > 1 ? '.' + x[1] : ''; 
 
    var rgx = /(\d+)(\d{3})/; 
 
    while (rgx.test(x1)) { 
 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
 
    } 
 
    return x1 + x2; 
 
}
<div id="counter"></div>


你可以尝试使用toLocaleString()这样的:

var n = 24350919 
n.toLocaleString() 

在你的情况下,它会像

setInterval("count += INCREMENT; document.getElementById('counter').innerHTML = 
     count;", msInterval.toLocaleString()); 
+0

谢谢你的回复,它更新更频繁,更快。但是我需要的是显示24,350,919这样的“,”。 – CrazyF8ck

+1

@JoshChisnerman: - 更新我的代码。请立即检查! –

+2

我爱你的男人!这很好用!谢谢你太多了! – CrazyF8ck

1

尝试.toLocaleString()

msInterval.toLocaleString() 
+0

谢谢你的回复,它更新更频繁,更快。但是我需要的是显示24,350,919这样的“,” – CrazyF8ck