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 select操作的日期联动实现代码
Dec 06 Javascript
基于jquery的跨域调用文件
Nov 19 Javascript
zShowBox 图片放大展示jquery版 兼容性
Sep 24 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
Jun 23 Javascript
javascript和jquery实现设置和移除文本框默认值效果代码
Jan 13 Javascript
js实现iframe自动自适应高度的方法
Feb 17 Javascript
基于jQuery的checkbox全选问题分析
Nov 18 Javascript
Vue中的数据监听和数据交互案例解析
Jul 12 Javascript
浅谈JavaScript 代码简洁之道
Jan 09 Javascript
微信小程序云开发 搭建一个管理小程序
May 17 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
Jul 30 Javascript
JS实现页面炫酷的时钟特效示例
Aug 14 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 readfile下载大文件失败的解决方法
2017/05/22 PHP
两个SUBMIT按钮,如何区分处理
2006/08/22 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
Javascript+CSS实现影像卷帘效果思路及代码
2014/10/20 Javascript
JS烟花背景效果实现方法
2015/03/03 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
jQuery实用小技巧_输入框文字获取和失去焦点的简单实例
2016/08/25 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
vue项目中导入swiper插件的方法
2018/01/30 Javascript
使用express来代理服务的方法
2019/06/21 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
2020/02/15 Javascript
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
深入解析Python中的上下文管理器
2016/06/28 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
python 图片去噪的方法示例
2019/07/09 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
详解Python中的分支和循环结构
2020/02/11 Python
使用python绘制cdf的多种实现方法
2020/02/25 Python
python 写函数在一定条件下需要调用自身时的写法说明
2020/06/01 Python
python中altair可视化库实例用法
2021/01/26 Python
世界上最好的帽子:Tilley
2016/11/27 全球购物
巴基斯坦电子产品购物网站:Home Shopping
2017/09/14 全球购物
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
Nayomi官网:沙特阿拉伯王国睡衣和内衣品牌
2020/12/19 全球购物
JavaScript实现页面动态验证码的实现示例
2021/03/23 Javascript
安全检查管理制度
2014/02/02 职场文书
百日安全活动总结
2014/05/04 职场文书
法定授权委托证明书
2014/09/27 职场文书
党委工作总结2015
2015/04/27 职场文书
房屋维修申请报告
2015/05/18 职场文书
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript
python使用shell脚本创建kafka连接器
2022/04/29 Python