// 实现数值自动增加动画
function NumAutoPlusAnimation(targetEle, options) {
let that = this
/*可以自己改造下传入的参数,按照自己的需求和喜好封装该函数*/
//不传配置就把它绑定在相应html元素的data-xxxx属性上吧
options = options || {};
var $this = document.getElementById(targetEle),
time = options.time || $this.data('time'), //总时间--毫秒为单位
finalNum = options.num || $this.data('value'), //要显示的真实数值
regulator = options.regulator || 100, //调速器,改变regulator的数值可以调节数字改变的速度
step = finalNum / (time / regulator),
/*每30ms增加的数值--*/
count = 0, //计数器
initial = 0;
var timer = setInterval(function() {
count = count + step;
if (count >= finalNum) {
clearInterval(timer);
count = finalNum;
}
//t未发生改变的话就直接返回
//避免调用text函数,提高DOM性能
var t = count.toFixed(1);
if (t == initial) return;
initial = t;
that.valChangeAmt = that.num2qfw(initial)
console.log(that.num2qfw(initial))
}, 30);
}
// 数值转换为千位符
function num2qfw(num) {
num += '';
if (!num.includes('.')) num += '.';
return num.replace(/(\d)(?=(\d{3})+\.)/g, function($0, $1) {
return $1 + ',';
}).replace(/\.$/, '');
}
调用:this.NumAutoPlusAnimation('valChangeAmt', {
time: 1500,
num: 258863.5,
regulator: 50
})
返回的就是千位符数值变化
js实现数值自动增加动画
最新推荐文章于 2024-04-09 11:44:45 发布