Jquery算上动画?

我有一个计数器需要在x秒内从0美元到10,000美元(很可能是3秒)。

只是直接的文字,有点像毫秒倒数计时器,但向上和美元符号。

我宁愿不使用笨重的插件,因为这只需要在x秒内循环1-10,00并且每100ms左右更新一次。

我坚持创建将更新的循环,我应该从哪里开始?


这是我到目前为止在点击事件上得到的:

function countUp() { console.log('counted'); } setInterval("countUp()", 1000) 

我会使用http://www.mredkj.com/javascript/numberFormat.html中的代码添加逗号:

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

然后我使用setInterval来计算最多1000个,如下所示:

 var x = 1; var interval = setInterval( function(){ if (x < 10000){ x = parseInt(x) + 100; if(x > 10000){x = 10000} $('#number').html("$" + addCommas(x)); }}, 10); 

诀窍是让它在3秒内发生,因为javascript的执行速度因浏览器而异。 在FireFox和谷歌浏览器中,10毫秒的延迟和100次跳跃计数对我有用。

上面的代码将每隔10毫秒继续运行,但一旦超过10,000美元就不会实际改变。 因此,只要将x设置为小于10,000的值,它就会再次开始计数。 但是,您可以使用clearInterval(interval)停止执行代码

使用jQuery(已编辑 ):

 $(function(){ var current = 0; var finish = 10000; var miliseconds = 3000; var rate = 20; var counter = setInterval(function(){ if(current >= finish) clearInterval(counter); $("#div").text("$" + current); current = parseInt(current) + parseInt(rate); }, miliseconds / (finish / rate)); }); 

创建一个函数,然后使用setInterval()来更新函数。

该函数应该是相当动态的,并且应该读取现有值,记得使用parseInt()来确保计算数字,而不仅仅是连接字符串。

45 + 45 == 4545

parseInt(45)+ parseInt(45)

使用闭包等。如果您需要更多帮助,请告诉我。

只是测试了这个有趣,随时修改,但你需要:

 var x = 0; var total = 10000; var seconds = 3; var interval = 100; var increment = Math.ceil(total / ((seconds * 1000) / 100)); var myInterval = setInterval(function(){ if((x + increment) < total){ x += increment; } else { x = total; clearInterval(myInterval); } console.log(x); }, interval);