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 相关文章推荐
onmouseover和onmouseout的一些问题思考
Aug 14 Javascript
jquery获取tr并更改tr内容示例代码
Feb 13 Javascript
使用javascript实现监控视频播放并打印日志
Jan 05 Javascript
原生javascript实现图片弹窗交互效果
Jan 12 Javascript
AngularJS 中的Promise --- $q服务详解
Sep 14 Javascript
HTML5+jQuery实现搜索智能匹配功能
Mar 24 jQuery
JS判断非空至少输入两个字符的简单实现方法
Jun 23 Javascript
用JS实现简单的登录验证功能
Jul 28 Javascript
TypeScript类型声明书写详解
Aug 28 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
Feb 14 Javascript
小程序双头slider选择器的实现示例
Mar 31 Javascript
html中两种获取标签内的值的方法
Jun 16 jQuery
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 默默经典版本
2009/08/04 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
js创建子窗口并且回传值示例代码
2013/07/02 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
react路由配置方式详解
2017/08/07 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
React Native AsyncStorage本地存储工具类
2017/10/24 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
vue-cli配置文件——config篇
2018/01/04 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
layui实现三级导航菜单
2019/07/26 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
js实现点赞效果
2020/03/16 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
粗略分析Python中的内存泄漏
2015/04/23 Python
浅谈使用Python变量时要避免的3个错误
2017/10/30 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
2019/01/15 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
python网络编程socket实现服务端、客户端操作详解
2020/03/24 Python
Python 如何创建一个线程池
2020/07/28 Python
Manjaro、pip、conda更换国内源的方法
2020/11/17 Python
使用HTML5捕捉音频与视频信息概述及实例
2018/08/22 HTML / CSS
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
高二物理教学反思
2014/02/08 职场文书
幼儿园老师寄语
2014/04/03 职场文书
船舶工程技术专业求职信
2014/08/07 职场文书
党员群众路线对照检查材料
2014/08/31 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
担保书范文
2019/07/09 职场文书
使用JS实现简易计算器
2021/06/14 Javascript