jQuery基于扩展实现的倒计时效果


Posted in Javascript onMay 14, 2016

本文实例讲述了jQuery基于扩展实现的倒计时效果。分享给大家供大家参考,具体如下:

<div id="fnTimeCountDown" data-end="">
<span class="mini">00</span>分
<span class="sec">00</span>秒
<span class="hm">000</span>
</div>
<script type="text/javascript" src="jquery-2.1.4.min.js"></script>
<script type="text/javascript">
 $.extend($.fn,{
  fnTimeCountDown:function(d){
   this.each(function(){
    var $this = $(this);
    var o = {
     hm: $this.find(".hm"),
     sec: $this.find(".sec"),
     mini: $this.find(".mini"),
     hour: $this.find(".hour"),
     day: $this.find(".day"),
     month:$this.find(".month"),
     year: $this.find(".year")
    };
    var f = {
     haomiao: function(n){
      if(n < 10)return "00" + n.toString();
      if(n < 100)return "0" + n.toString();
      return n.toString();
     },
     zero: function(n){
      var _n = parseInt(n, 10);//解析字符串,返回整数
      if(_n > 0){
       if(_n <= 9){
        _n = "0" + _n
       }
       return String(_n);
      }else{
       return "00";
      }
     },
     dv: function(){
      //d = d || Date.UTC(2050, 0, 1); //如果未定义时间,则我们设定倒计时日期是2050年1月1日
      var _d = $this.data("end") || d;
      var now = new Date(),
       endDate = new Date(_d);
      //现在将来秒差值
      //alert(future.getTimezoneOffset());
      var dur = (endDate - now.getTime()) / 1000 , mss = endDate - now.getTime() ,pms = {
       hm:"000",
       sec: "00",
       mini: "00",
       hour: "00",
       day: "00",
       month: "00",
       year: "0"
      };
      if(mss > 0){
       pms.hm = f.haomiao(mss % 1000);
       pms.sec = f.zero(dur % 60);
       pms.mini = Math.floor((dur / 60)) > 0? f.zero(Math.floor((dur / 60)) % 60) : "00";
       pms.hour = Math.floor((dur / 3600)) > 0? f.zero(Math.floor((dur / 3600)) % 24) : "00";
       pms.day = Math.floor((dur / 86400)) > 0? f.zero(Math.floor((dur / 86400)) % 30) : "00";
       //月份,以实际平均每月秒数计算
       pms.month = Math.floor((dur / 2629744)) > 0? f.zero(Math.floor((dur / 2629744)) % 12) : "00";
       //年份,按按回归年365天5时48分46秒算
       pms.year = Math.floor((dur / 31556926)) > 0? Math.floor((dur / 31556926)) : "0";
      }else{
       pms.year=pms.month=pms.day=pms.hour=pms.mini=pms.sec="00";
       pms.hm = "000";
       //alert('结束了');
       return;
      }
      return pms;
     },
     ui: function(){
      if(o.hm){
       o.hm.html(f.dv().hm);
      }
      if(o.sec){
       o.sec.html(f.dv().sec);
      }
      if(o.mini){
       o.mini.html(f.dv().mini);
      }
      if(o.hour){
       o.hour.html(f.dv().hour);
      }
      if(o.day){
       o.day.html(f.dv().day);
      }
      if(o.month){
       o.month.html(f.dv().month);
      }
      if(o.year){
       o.year.html(f.dv().year);
      }
      setTimeout(f.ui, 1);
     }
    };
    f.ui();
   });
  }
 });
</script>
<script type="text/javascript">
 $("#fnTimeCountDown").fnTimeCountDown("2018/07/08 18:45:13");
</script>

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
JQuery优缺点分析说明
Jun 09 Javascript
改写一个简单的菜单 弹性大小
Dec 02 Javascript
Javascript定义类(class)的三种方法详解
Mar 13 Javascript
jQuery垂直多级导航菜单代码分享
Aug 18 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
Apr 30 Javascript
jQuery 全选 全部选 反选 实现代码
Aug 17 Javascript
详解webpack多页面配置记录
Jan 22 Javascript
妙用缓存调用链实现JS方法的重载
Apr 30 Javascript
在vue中使用v-bind:class的选项卡方法
Sep 27 Javascript
详解如何写出一个利于扩展的vue路由配置
May 16 Javascript
vue 实现路由跳转时更改页面title
Nov 05 Javascript
在VUE中使用lodash的debounce和throttle操作
Nov 09 Javascript
Angularjs中UI Router的使用方法
May 14 #Javascript
两种js监听滚轮事件的实现方法
May 13 #Javascript
原生js和jquery分别实现横向导航菜单效果
May 13 #Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
May 13 #Javascript
AngularJS在IE8的不支持的解决方法
May 13 #Javascript
基于jquery插件实现拖拽删除图片功能
Aug 27 #Javascript
JavaScript String 对象常用方法详解
May 13 #Javascript
You might like
国内php原创论坛
2006/10/09 PHP
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
2006/11/07 Javascript
WordPress 插件——CoolCode使用方法与下载
2007/07/02 Javascript
JS创建类和对象的两种不同方式
2014/08/08 Javascript
jQuery控制TR显示隐藏的三种常用方法
2014/08/21 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
canvas实现环形进度条效果
2017/03/23 Javascript
jquery实现限制textarea输入字数的方法
2017/09/06 jQuery
什么是Vue.js框架 为什么选择它?
2017/10/17 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
2019/09/18 Javascript
Python中的类学习笔记
2014/09/23 Python
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
用Python写一个无界面的2048小游戏
2016/05/24 Python
利用 python 对目录下的文件进行过滤删除
2017/12/27 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
Python进阶:生成器 懒人版本的迭代器详解
2019/06/29 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
HTML5 Canvas锯齿图代码实例
2014/04/10 HTML / CSS
HTML5中的强制下载属性download使用实例解析
2016/05/12 HTML / CSS
英国床垫在线:Mattress Online
2016/12/07 全球购物
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
会计系个人求职信范文分享
2013/12/20 职场文书
大学生求职信例文
2014/06/29 职场文书
2014县委书记四风对照检查材料思想汇报
2014/09/21 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
干部培训工作总结2015
2015/05/25 职场文书
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS