/*! * jquery.numscroll.js -- 数字滚动累加动画插件 (digital rolling cumulative animation) * version 1.0.0 * 2018-09-22 * author: kevintseng < 921435247@qq.com@qq.com > * 文档: https://github.com/chaorenzeng/jquery.numscroll.js.git * qq交流群: 739574382 */ (function($) { function isint(num) { //作用:是否为整数 //返回:true是 false否 var res = false; try { if(string(num).indexof(".") == -1 && string(num).indexof(",") == -1) { res = parseint(num) % 1 === 0 ? true : false; } } catch(e) { res = false; } return res; } function isfloat(num) { //作用:是否为小数 //返回:小数位数(-1不是小数) var res = -1; try { if(string(num).indexof(".") != -1) { var index = string(num).indexof(".") + 1; //获取小数点的位置 var count = string(num).length - index; //获取小数点后的个数 if(index > 0) { res = count; } } } catch(e) { res = -1; } return res; } $.fn.numscroll = function(options) { var settings = $.extend({ 'time': 1500, 'delay': 0 }, options); return this.each(function() { var $this = $(this); var $settings = settings; var num = $this.attr("data-num") || $this.text(); //实际值 var temp = 0; //初始值 $this.text(temp); var numisint = isint(num); var numisfloat = isfloat(num); var step = (num / $settings.time) * 10; //步长 settimeout(function() { var numscroll = setinterval(function() { if(numisint) { $this.text(math.floor(temp)); } else if(numisfloat != -1) { $this.text(temp.tofixed(numisfloat)); } else { $this.text(num); clearinterval(numscroll); return; } temp += step; if(temp > num) { $this.text(num); clearinterval(numscroll); } }, 1); }, $settings.delay); }); }; })(jquery);