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实用代码片段集合
Aug 12 Javascript
用jquery实现输入框获取焦点消失文字
Apr 27 Javascript
Javascript 中创建自定义对象的方法汇总
Dec 04 Javascript
JavaScript学习总结之JS、AJAX应用
Jan 29 Javascript
写jQuery插件时的注意点
Feb 20 Javascript
node.js调用Chrome浏览器打开链接地址的方法
May 17 Javascript
Vue实现active点击切换方法
Mar 16 Javascript
AngularJS实现的自定义过滤器简单示例
Feb 02 Javascript
vuex + keep-alive实现tab标签页面缓存功能
Oct 17 Javascript
JavaScript多种滤镜算法实现代码实例
Dec 10 Javascript
微信小程序实现弹框效果
May 26 Javascript
JavaScript十大取整方法实例教程
Dec 03 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实现网页端验证码功能
2017/07/11 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
语义化 H1 标签
2008/01/14 Javascript
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
点击进行复制的JS代码实例
2013/08/23 Javascript
js操作输入框提示信息且响应鼠标事件
2014/03/25 Javascript
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
JavaScript返回网页中锚点数目的方法
2015/04/03 Javascript
jquery实现图片上传之前预览的方法
2015/07/11 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
2017/12/10 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
Vue.extend实现挂载到实例上的方法
2019/05/01 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
JavaScript常用内置对象用法分析
2019/07/09 Javascript
js实现图片跟随鼠标移动效果
2019/10/16 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
Django实现组合搜索的方法示例
2018/01/23 Python
Windows下python3.7安装教程
2018/07/31 Python
Python装饰器限制函数运行时间超时则退出执行
2019/04/09 Python
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
Vilebrequin美国官方网上商店:法国豪华泳装品牌
2020/02/22 全球购物
金融专业毕业生推荐信
2013/11/26 职场文书
房屋改造计划书
2014/01/10 职场文书
美术专业个人自我评价
2014/01/18 职场文书
技校毕业生自荐信范文
2014/03/07 职场文书
给市场的环保建议书
2014/05/14 职场文书
优秀党员推荐材料
2014/12/18 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
Django migrate报错的解决方案
2021/05/20 Python