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 相关文章推荐
javascript 当前日期加(天、周、月、年)
Aug 09 Javascript
基于jquery的direction图片渐变动画效果
May 24 Javascript
node.js中的http.request.end方法使用说明
Dec 10 Javascript
assert()函数用法总结(推荐)
Jan 25 Javascript
微信小程序实现tab和swiper切换结合效果
Jul 17 Javascript
vuejs实现标签选项卡动态更改css样式的方法
May 31 Javascript
layer弹出层父子页面事件相互调用方法
Aug 17 Javascript
jQuery中DOM常见操作实例小结
Aug 01 jQuery
JavaScript中的相等操作符使用详解
Dec 21 Javascript
JS实现音乐钢琴特效
Jan 06 Javascript
JavaScript语法约定和程序调试原理解析
Nov 03 Javascript
简单聊聊TypeScript只读修饰符
Apr 06 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
php强制下载类型的实现代码
2011/04/21 PHP
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
个人写的PHP验证码生成类分享
2014/08/21 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
Symfony核心类概述
2016/03/17 PHP
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
JavaScript清空数组元素的两种方法简单比较
2015/07/10 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
Python enumerate遍历数组示例应用
2008/09/06 Python
Python爬取Coursera课程资源的详细过程
2014/11/04 Python
简单解析Django框架中的表单验证
2015/07/17 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
python制作小说爬虫实录
2017/08/14 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
python能开发游戏吗
2020/06/11 Python
详解HTML5 canvas绘图基本使用方法
2018/01/29 HTML / CSS
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
估算杭州有多少软件工程师
2015/08/11 面试题
建筑专业毕业生推荐信
2013/11/21 职场文书
个人查摆剖析材料
2014/02/04 职场文书
《大海那边》教学反思
2014/04/09 职场文书
电气工程及其自动化专业求职信
2014/06/23 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
求职信格式范文
2015/03/19 职场文书
军训决心书范文
2015/09/22 职场文书
Jupyter notebook 输出部分显示不全的解决方案
2021/04/24 Python