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 相关文章推荐
jquery ready函数源代码研究
Dec 06 Javascript
JavaScript 大数据相加的问题
Aug 03 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
Jan 24 Javascript
jquery使用ColorBox弹出图片组浏览层实例演示
Mar 14 Javascript
js 判断图片是否加载完以及实现图片的预下载
Aug 14 Javascript
jquery取子节点及当前节点属性值的方法
Sep 09 Javascript
jquery实现的横向二级导航效果代码
Aug 26 Javascript
AngularJS 中的事件详解
Jul 28 Javascript
详解AngularJs中$resource和restfu服务端数据交互
Sep 21 Javascript
JavaScript面向对象精要(下部)
Sep 12 Javascript
打字效果动画的4种实现方法(超简单)
Oct 18 Javascript
在小程序中推送模板消息的实现方法
Jul 22 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
iis下php mail函数的sendmail配置方法(官方推荐)
2012/04/25 PHP
php后退一页表单内容保存实现方法
2012/06/17 PHP
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
PHP实现无限分类的实现方法
2016/11/14 PHP
javascript继承之为什么要继承
2012/11/10 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
2013/04/17 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
Angular.js ng-file-upload结合springMVC的使用教程
2017/07/10 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
5分钟快速掌握JS中var、let和const的异同
2018/09/19 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
微信小程序的tab选项卡的实现效果
2019/05/15 Javascript
Vue中使用JsonView来展示Json树的实例代码
2020/11/16 Javascript
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
Django后台admin的使用详解
2019/07/08 Python
Python读取实时数据流示例
2019/12/02 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
2020/06/08 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
详解python的super()的作用和原理
2020/10/29 Python
java字符串格式化输出实例讲解
2021/01/06 Python
携程旅行网:中国领先的在线旅行服务公司
2017/02/17 全球购物
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
年会搞笑主持词串词
2014/03/24 职场文书
党员教师四风自我剖析材料
2014/09/30 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
仙境之桥观后感
2015/06/16 职场文书
运动会主持词大全
2015/07/02 职场文书
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL