Javascript 每x毫秒增加元素中的数字值

Javascript 每x毫秒增加元素中的数字值,javascript,jquery,html,Javascript,Jquery,Html,我有一个简单的HTML: <span id="badge">0</span> 0 我希望数字0每x毫秒增加1。我如何使用Javascript(使用或不使用jQuery)实现这一点 非常感谢-我是新来的:)检查一下这个类似的东西 var millisecs = 10; setInterval(function() { var $badge = $('#badge'); $badge.text(parseInt($badge.text())++); }, mill

我有一个简单的HTML:

<span id="badge">0</span>
0
我希望数字0每x毫秒增加1。我如何使用Javascript(使用或不使用jQuery)实现这一点

非常感谢-我是新来的:)

检查一下这个类似的东西

var millisecs = 10;
setInterval(function() {
  var $badge = $('#badge');
  $badge.text(parseInt($badge.text())++);
}, millisecs);
您应该这样做:

<script>
   var $badge = $('#badge'); // cache 
   setInterval(function () {
        var value = parseInt($badge.html());
        value++;
        $badge.html(value);
   }, 1000);

</script>

var$badge=$(“#badge”);//隐藏物
setInterval(函数(){
var value=parseInt($badge.html());
值++;
$badge.html(值);
}, 1000);

假设1000毫秒。

您可以使用
setInterval

function increment() {
    document.getElementById("badge").value = Number(document.getElementById("badge").value) + 1;
    setTimeout("increment()",3000);
}
increment()
var $badge = $('#badge');
setInterval(function () {
     $badge.html(parseInt($badge.html()) + 1);
}, 1);​//Specify the milliseconds here, right it will update the value every 1 millisecond
工作演示-


我在这里看到的每个答案都有相同的缺点:

  • 性能问题,因为每个毫秒周期都选择DOM元素。尤其是在使用大型库作为jQuery时
  • setInterval()
    可能是为该功能设计的工具,但不可靠。它可能会偏离实时,特别是在使用小间隔时。如果您希望每秒执行x次,可以在谷歌上搜索一些计时库
我将编写以下代码:

var textNode = document.getElementById(badge).firstChild;
var start = Date.now();
window.setInterval(function update() {
    textNode.data = Math.round((new Date()-start)/ms);
}, ms);
如果您不想从0开始,那么添加偏移量(在循环开始之前确定)将非常简单,例如


您可以创建一个Jquery插件,以便在需要时可以重用

$.fn.increment= function(options) {

 var $this = $(this);

 var coef = options.coef;

 var speed = options.speed;

 var value = 0;

 setInterval(function(){ 

    value = value + coef ;

    $this.html(value);

 }, speed);

};
在主javascript文件中:

$("#badge").increment({coef: 1, speed:1000});

工作演示:

$badge.html()
转换为INT<正在调用code>parseInt。嗯……我正在将其转换为一个数字,因此对number()的调用非常正确,很抱歉打扰您。帮我一个忙,向上投票;没有理由使用-1。查看此页面,在setInterval和setTimeout之间找到更好的选择:嗯,你疯了吗?每个循环执行两次jQuery?想象一下100毫秒的间隔!谢谢工作完美。如果我想增加一个延迟,怎么做呢?只有一次,在开始增加值之前。
$.fn.increment= function(options) {

 var $this = $(this);

 var coef = options.coef;

 var speed = options.speed;

 var value = 0;

 setInterval(function(){ 

    value = value + coef ;

    $this.html(value);

 }, speed);

};
$("#badge").increment({coef: 1, speed:1000});