在一段时间内增加价值JS

时间:2015-08-14 15:16:33

标签: javascript jquery timer counter

好的,关于我的上一个问题。我目前有这个代码:

var secs = 100;
setInterval(function() {
    var $badge = $('#nhb_01');
    $badge.text((parseFloat($badge.text())+0.01).toFixed(2));
}, secs);

基本上,我需要计数器每分钟增加一定的值。

所以我需要的一个值是0.17。

所以我需要计数器每分钟增加0.17。因此,2分钟后,计数器将读取0.34,依此类推。

我如何解决这个问题,因为计算出它应该花费多少毫秒才会变得如此痛苦和混乱!

感谢您的帮助!

Demo.

3 个答案:

答案 0 :(得分:1)

而不是每次从元素中获取文本而不是更好(更高效)来保持JS计数器增加:

var secs = 1000 * 60;
var count = 0;
setInterval(function() {
    var $badge = $('#nhb_01');
    count += 0.17;
    $badge.text(count.toFixed(2));
}, secs);

DEMO - 运行速度比平常快一点,这样你就能看到效果。

答案 1 :(得分:0)



var secs = 60 * 1000;
setInterval(function() {
    var $badge = $('#nhb_01');
    $badge.text((parseFloat($badge.text())+0.17).toFixed(2));
}, secs);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="nhb_01">0</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

具有给定帧率的持续时间从起始值到结束值的增量。

@Dan-Levi Tømta's answer的启发。

<强> HTML

<h2>Increment Value over a Duration with a given framerate</h2>
Value: <span id="value">0</span>

<强> JS

var valueElement = document.getElementById('value');

var start     = 0;
var end       = 100;
var duration  = 10000; // In milliseconds (divide by 1000 to get seconds).
var framerate = 50;    // In milliseconds (divide by 1000 to get seconds).

var toAdd = ( ( end - start ) * framerate ) / duration;

var interval = setInterval(function() {
    var currentValue = parseFloat(valueElement.innerHTML);

  if (currentValue >= end) {
      clearInterval(interval);
    return;
  }

    valueElement.innerHTML = (!isNaN(currentValue) == true ? currentValue + toAdd : toAdd);
}, framerate);

<强>的jsfiddle

https://jsfiddle.net/L3Ln1f7b/

从这个基地,你可以做很多事情。调整帧率有助于解决性能问题,持续时间可以加快速度或降低速度