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学习网址备忘
May 29 Javascript
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
Sep 14 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
May 23 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
Jul 20 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
Mar 12 Javascript
JavaScript访问字符串中单个字符的两种方法
Jul 03 Javascript
果断收藏9个Javascript代码高亮脚本
Jan 06 Javascript
利用JS实现一个同Excel表现的智能填充算法
Aug 13 Javascript
详解Vue.directive 自定义指令
Mar 27 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
Nov 13 Javascript
Vue的data、computed、watch源码浅谈
Apr 04 Javascript
vue flex 布局实现div均分自动换行的示例代码
Aug 05 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中使用与Perl兼容的正则表达式
2006/11/26 PHP
php 防止单引号,双引号在接受页面转义
2008/07/10 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
2013/11/07 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
动态添加option及createElement使用示例
2014/01/26 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
分享使用AngularJS创建应用的5个框架
2015/12/05 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
Vue页面骨架屏注入方法
2018/05/13 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
2018/09/15 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
Vue中keep-alive组件作用详解
2020/02/04 Javascript
浅谈vue单页面中有多个echarts图表时的公用代码写法
2020/07/19 Javascript
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
python 将json数据提取转化为txt的方法
2018/10/26 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
西安当代医院管理研究院笔试题
2015/12/11 面试题
文员个人的求职信范文
2013/09/26 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书
go使用Gin框架利用阿里云实现短信验证码功能
2021/08/04 Golang
阿里云服务器部署RabbitMQ集群的详细教程
2022/06/01 Servers