Javascript 每x毫秒增加元素中的数字值
我有一个简单的HTML: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
<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时
可能是为该功能设计的工具,但不可靠。它可能会偏离实时,特别是在使用小间隔时。如果您希望每秒执行x次,可以在谷歌上搜索一些计时库setInterval()
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});