我从不同的帖子中获得了这个动画功能
function animateValue(id, start, end, duration) {
var obj = document.getElementById(id);
var range = end - start;
var minTimer = 50;
var stepTime = Math.abs(duration / range);
stepTime = Math.max(stepTime, minTimer);
var startTime = new Date().getTime();
var endTime = startTime + duration;
var timer;
function run() {
var now = new Date().getTime();
var remaining = Math.max((endTime - now) / duration, 0);
var value = end - (remaining * range);
obj.innerHTML = (value).toLocaleString('en', { maximumFractionDigits: 16 });
if (value == end) clearInterval(timer);
}
var timer = setInterval(run, stepTime);
run();
}
哪个效果很好!我每秒更新一次正常工作的值,直到值下降并且涉及小数。在这一点上计数错误,我认为这是因为时机并不完美。我该如何解决这个问题?我似乎无法弄明白。
您可以在此处查看错误:https://jsfiddle.net/rrnop6q6/