js实现简单数字变动效果


Posted in Javascript onNovember 06, 2017

本文实例为大家分享了js实现数字变动效果展示的具体代码,供大家参考,具体内容如下

$.fn.countTo = function (options) {
 options = options || {};//当options未被初始化,即typeof options = 'undefined'时,执行后面部分即var options = {}来初始化一个对象

 return $(this).each(function () {
  // set options for current element
  var settings = $.extend({}, $.fn.countTo.defaults, {
  from:  $(this).data('from'),
  to:  $(this).data('to'),
  speed:  $(this).data('speed'),
  refreshInterval: $(this).data('refresh-interval'),
  decimals: $(this).data('decimals')
  }, options);

  // how many times to update the value, and how much to increment the value on each update
  //更新值多少次,每次更新值多快
  var loops = Math.ceil(settings.speed / settings.refreshInterval),
  increment = (settings.to - settings.from) / loops;

  // references & variables that will change with each update
  //引用和变量每次更新将改变
  var self = this,//返回html对象
  $self = $(this),//返回返回一个jquery对象
  loopCount = 0,
  value = settings.from,
  data = $self.data('countTo') || {};//获取jauery方法对象

  $self.data('countTo', data);//赋值

  // if an existing interval can be found, clear it first
  //如果存在间隔,则清除它
  if (data.interval) {
  clearInterval(data.interval);
  }
  data.interval = setInterval(updateTimer, settings.refreshInterval);

  // initialize the element with the starting value
  //用开始的值初始化
  render(value);

  function updateTimer() {
  value += increment;
  loopCount++;

  render(value);

  if (typeof(settings.onUpdate) == 'function') {
   settings.onUpdate.call(self, value);
  }

  if (loopCount >= loops) {
   // remove the interval
   $self.removeData('countTo');
   clearInterval(data.interval);
   value = settings.to;

   if (typeof(settings.onComplete) == 'function') {
   settings.onComplete.call(self, value);
   }
  }
  }

  function render(value) {
  var formattedValue = settings.formatter.call(self, value, settings);
  $self.html(formattedValue);
  }
 });
 };

 $.fn.countTo.defaults = {
 from: 200,  // the number the element should start at
 to: 0,   // the number the element should end at
 speed: 1000,  // how long it should take to count between the target numbers
 refreshInterval: 1, // how often the element should be updated
 decimals: 0,  // the number of decimal places to show
 formatter: formatter, // handler for formatting the value before rendering
 onUpdate: null, // callback method for every time the element is updated
 onComplete: null // callback method for when the element finishes updating
 };

 function formatter(value, settings) {
 return value.toFixed(settings.decimals);
 }

 // custom formatting example
 $('#count-number').data('countToOptions', {
 formatter: function (value, options) {
 return value.toFixed(options.decimals).replace(/\B(?=(?:\d{3})+(?!\d))/g, ',');
 }
 });

 // start all the timers
 $('.timer').each(count);
 function count(options) {
 var $this = $(this);
 options = $.extend({}, options || {}, $this.data('countToOptions') || {});
 $this.countTo(options);
 }

apply与call的简单用法,学习链接。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
20款非常优秀的 jQuery 工具提示插件 推荐
Jul 15 Javascript
Ajax执行顺序流程及回调问题分析
Dec 10 Javascript
原生js实现半透明遮罩层效果具体代码
Jun 06 Javascript
原始XMLHttpRequest方法详情回顾
Nov 28 Javascript
jQuery Ajax中的事件详细介绍
Apr 16 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
Apr 20 Javascript
vue实现个人信息查看和密码修改功能
May 06 Javascript
详解一个基于react+webpack的多页面应用配置
Jan 21 Javascript
详解使用WebPack搭建React开发环境
Aug 06 Javascript
微信小程序实现手势滑动效果
Aug 26 Javascript
layui扩展上传组件模拟进度条的方法
Sep 23 Javascript
详解Vue3中对VDOM的改进
Apr 23 Javascript
利用百度地图API获取当前位置信息的实例
Nov 06 #Javascript
原生js封装添加class,删除class的实例
Nov 06 #Javascript
Node.js实现发送邮件功能
Nov 06 #Javascript
快速搭建React的环境步骤详解
Nov 06 #Javascript
基于Two.js实现星球环绕动画效果的示例
Nov 06 #Javascript
two.js之实现动画效果示例
Nov 06 #Javascript
JS实现图片放大镜插件详解
Nov 06 #Javascript
You might like
第五节 克隆 [5]
2006/10/09 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
js window.event对象详尽解析
2009/02/17 Javascript
js的逻辑运算符 ||
2010/05/31 Javascript
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
js为什么不能正确处理小数运算?
2015/12/29 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
2017/05/19 jQuery
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
详解VUE调用本地json的使用方法
2019/05/15 Javascript
python使用PIL缩放网络图片并保存的方法
2015/04/24 Python
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
Python图像灰度变换及图像数组操作
2016/01/27 Python
Python日期时间Time模块实例详解
2019/04/15 Python
Python实现通过解析域名获取ip地址的方法分析
2019/05/17 Python
Python秒算24点实现及原理详解
2019/07/29 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
函授教育个人学习的自我评价
2013/12/31 职场文书
幼儿园五一活动方案
2014/02/07 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
学校感恩教育活动总结
2014/07/07 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
少先队辅导员事迹材料
2014/12/24 职场文书
消防安全月活动总结
2015/05/08 职场文书
现货白银电话营销话术
2015/05/29 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript