2014-07-07 41 views
0

我有一个带有整数内容的div。使用jQuery每秒使div值增加一个随机值

<div class="count">12,747,822</div> 

我想增加它的内容由每秒2到5之间的随机数。这是我迄今为止所尝试的

<script type="text/javascript"> 
    function randomIntFromInterval(min,max) { 
     return Math.floor(Math.random()*(max-min+1)+min); 
    } 

    $(document).ready(function(){ 
     $('.count').html(function(i, val) { return +val+randomIntFromInterval(2,5) }); 
    }); 
</script> 

由于某些原因,这会创建一个空格div。我应该如何处理这个问题?

+0

在这里你去:http://jsfiddle.net/8528z/1/ – jeremy

+0

@Satpal我要添加的数量,而不是将其追加最后。 – user3725362

+0

@ user3725362,http://jsfiddle.net/satpalsingh/6L3LJ/然而,格式化你想要的号码 – Satpal

回答

3

您需要的HTML解析使用parseInt函数的数字(整数),那么你需要使它回到一个字符串,并把逗号后面作为千位分隔符: How to print a number with commas as thousands separators in JavaScript

最后,你需要一个时间间隔每秒钟重复运行代码。

function randomIntFromInterval(min,max) { 
    return Math.floor(Math.random()*(max-min+1)+min); 
} 

$(document).ready(function(){ 
    setInterval(function() { 
     $('.count').html(function(i, val) { 
      val = val.replace(/,/g,''); 
      return (parseInt(val,10)+randomIntFromInterval(2,5)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); 
     }) 
    }, 1000); 

}); 

JSFiddle

+0

你可以使用'.toLocaleString()'来代替那个可怕的正则表达式...... = /然后不需要你的'.toString()'转换。 – jeremy

+0

@Jeremy'.toLocaleString()'支持多种浏览器,但感谢您的建议:) – forsvunnet

+0

Err ...每个主流浏览器都支持它...所以不是真的=/ – jeremy

0

希望这有助于

function rndint(min,max) 
     { 
      return Math.floor(Math.random()*(max-min+1)+min); 
     } 

    function updateVal(){ 
      var curval=$('.count').html().trim(); 
      if(curval===undefined || curval.length==0) 
       curval=0; 
      curval=curval.replace(/\,/g,''); 
      curval=(parseInt(curval)+(0+parseInt(rndint(2,5)))); 
      var s=(curval+"").split(''); 
      var res=""; 
      var i=0; 
      //Reverse keys for comma insertion after 3 chars 
      var keys = new Array(); 
      for (var k in s) { 
       keys.unshift(k); 
      } 
      for (var c = keys.length, n = 0; n < c; n++) { 
       res=""+s[keys[n]]+res; 
       if((i+1)%3==0 && i !=s.length-1) 
        res=","+res; 
       i++; 
      } 
      $('.count').html(res); 

    } 
     $(document).ready(function(){ 
      setInterval(updateVal, 3000); 
     });