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 相关文章推荐
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
Aug 28 Javascript
Javascript 中介者模式实例
Dec 16 Javascript
Node.js生成HttpStatusCode辅助类发布到npm
Apr 09 Javascript
Javascript实现重力弹跳拖拽运动效果示例
Jun 28 Javascript
jquery等宽输出文字插件使用介绍
Sep 18 Javascript
JavaScript中匿名函数用法实例
Mar 23 Javascript
jQuery niceScroll滚动条错位问题的解决方法
Feb 03 jQuery
vue的.vue文件是怎么run起来的(vue-loader)
Dec 10 Javascript
vue多层嵌套路由实例分析
Mar 19 Javascript
基于Proxy的小程序状态管理实现
Jun 14 Javascript
浅谈layui分页控件field参数接收对象的问题
Sep 20 Javascript
在Echarts图中给坐标轴加一个标识线markLine
Jul 20 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函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
PHP实现一个简单url路由功能实例
2016/11/05 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
jquery简单实现鼠标经过导航条改变背景图
2013/12/17 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
2015/08/21 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
vue实现图片预览组件封装与使用
2019/07/13 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
用python删除java文件头上版权信息的方法
2014/07/31 Python
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
python实现一次性封装多条sql语句(begin end)
2020/06/06 Python
css3给背景图片加颜色遮罩的方法
2019/11/05 HTML / CSS
Born鞋子官网:Born Shoes
2017/04/06 全球购物
将n个数按输入顺序的逆序排列,用函数实现
2012/11/14 面试题
环境科学专业个人求职信
2013/09/26 职场文书
作弊检讨书1000字
2014/02/01 职场文书
奠基仪式主持词
2014/03/20 职场文书
物流管理专业毕业生求职信
2014/03/23 职场文书
离婚被告答辩状
2015/05/22 职场文书
python内置进制转换函数的操作
2021/06/02 Python
js实现自动锁屏功能
2021/06/02 Javascript
试了下Golang实现try catch的方法
2021/07/01 Golang
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis
mysql sock文件存储了什么信息
2022/07/15 MySQL