私はある数値を別の数値に増やす関数を作った。しかし、これは私の期間ロジックは動作しません。別の番号に増分する正確な時間を設定する
.animateNumber()
で3番目のパラメータは継続され、そして私は、これは新しい番号にインクリメント費やした時間になりたいです。
時間が500に設定されているのであれば、それは10からインクリメント500ミリ秒(スタート)取るよ - 500(終わり)、そしてこれは、任意の開始値と終了値を同じになります。私はこれを行うには、私のstepTimeロジックを固定してもよい方法
http://jsbin.com/kepibetuxu/edit?html,js,console,output
HTMLElement.prototype.animateNumber = function(start, end, duration) {
this.style.opacity = 0.5;
var self = this,
range = end - start,
current = start,
increment = end > start? 1 : -1,
stepTime = duration/range,
timer = setInterval(function() {
current += increment;
self.innerHTML = current;
if (current == end) {
self.style.opacity = 1;
clearInterval(timer);
}
}, stepTime);
console.log(range);
console.log(stepTime);
};
document.querySelector('.value').animateNumber(400, 500, 20);
document.querySelector('.value1').animateNumber(0, 500, 20);
<div class="value">0</div>
<div class="value1">0</div>
?
これはsetTimeoutの動作方法ではありません。特定のダニでイベントを登録します。 [requestAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame)を見てください。 – Rajesh