基于jQuery的倒计时插件代码


Posted in Javascript onMay 07, 2011

剩余时间:1小时:40分:30秒

1 /* 
* 倒计时插件,主要用来限时购买 
* By wayshan 版本1.0 
* 使用方法: 
* $(function(){ 
* $("#ElementId").countdown({ 
* Edate:"2012-12-21 15:14:23" 
* }); 
* }) */ 
;(function($){ 
$.fn.countdown = function(options){ 
if (this.length == 0){ 
return false; 
} 
return this.each(function(){ 
var Default = { 
Sdate:null,//开始时间(格式为“2010-10-10 10:10:10”)可以设置为服务端的时间 
Edate:null,//结束日期(格式为“2010-10-10 10:10:10”) 
callback:function(){ 
return false; 
} 
}, 
_H_Text='小时', 
_M_Text='分', 
_S_Text='秒', 
_lT = null, 
_cT = new Date(), 
_eT = null, 
_elT = null, 
ctime = null, 
etime = null, 
DomId = null, 
_timeout = null, 
_gt = function(){ 
if (_lT == null) { 
_elT = (etime - ctime); 
if (_elT < 0){ 
$('#'+DomId).html("<strong>0</strong>"+_H_Text+":<strong>0</strong>"+ 
_M_Text+":<strong>0</strong>"+_S_Text); 
} 
var _xT =Math.ceil(_elT/(24*60*60*1000)); 
_cT = parseInt(_cT.match(/\s(\d+)\D/)[1] * 3600) 
+ parseInt(_cT.split(":")[1] * 60)+ parseInt(_cT.split(":")[2]); 
_eT = _xT * 24 * 3600 + parseInt(_eT.match(/\s(\d+)\D/)[1] * 3600) 
+ parseInt(_eT.split(":")[1] * 60) + parseInt(_eT.split(":")[2]); 
_lT = _elT/1000; 
} 
if (_elT > 0) { 
if (_lT >= 0) { 
var _H = Math.floor(_lT / 3600); 
var _M = Math.floor((_lT - _H * 3600) / 60); 
var _S = (_lT - _H * 3600) % 60; 
$('#'+DomId).html("<strong>" + _H + "</strong>"+_H_Text+":<strong>" 
+ _M + "</strong>"+_M_Text+":<strong>" + _S + "</strong>"+_S_Text); 
_lT--; 
} else { 
clearInterval(_timeout); 
if(s.callback && $.isFunction(s.callback)){ 
s.callback.call(this); 
} 
} 
} else { 
clearInterval(_timeout); 
if(s.callback && $.isFunction(s.callback)){ 
s.callback.call(this); 
} 
} 
}, 
strDateTime = function(str){ 
//判断日期时间的输入是否正确,类型必须形如为:2011-01-01 01:01:01 
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; 
var r = str.match(reg); 
if(r==null)return false; 
var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); 
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4] 
&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]); 
} 
var s = $.extend({}, Default, options || {}); 
DomId = this.id; 
if (DomId == 'null'){ 
return; 
} 
_eT = s.Edate; 
if (!strDateTime(_eT)){ 
alert('结束日期格式不正确'); 
return false; 
} 
if (s.Sdate != null){ 
_cT = s.Sdate; 
} 
_cT = _cT.toString(); 
cdate = _cT.replace(/-/g, '/'); 
_eT = _eT.toString(); 
edate = _eT.replace(/-/g, '/'); 
ctime = new Date(cdate); 
etime = new Date(edate); 
_timeout = setInterval(_gt, 1000) 
}); 
} 
})(jQuery);
Javascript 相关文章推荐
Javascript面向对象设计一 工厂模式
Dec 20 Javascript
判定是否原生方法的JS代码
Nov 12 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
Jul 29 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
Nov 27 Javascript
实例详解jQuery的无new构建
Aug 02 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
Oct 11 Javascript
AngularJS实现动态编译添加到dom中的方法
Nov 04 Javascript
three.js实现围绕某物体旋转
Jan 25 Javascript
Vue键盘事件用法总结
Apr 18 Javascript
前端MVVM框架解析之双向绑定
Jan 24 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
Nov 25 Javascript
layui动态加载多表头的实例
Sep 05 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
May 06 #Javascript
jQuery 常见操作实现方式和常用函数方法总结
May 06 #Javascript
jQuery1.6 正式版发布并提供下载
May 05 #Javascript
High Performance JavaScript(高性能JavaScript)读书笔记分析
May 05 #Javascript
jQuery bind事件使用详解
May 05 #Javascript
javascript 拖动表格行实现代码
May 05 #Javascript
小试JQuery的AutoComplete插件
May 04 #Javascript
You might like
ThinkPHP采用模块和操作分析
2011/04/18 PHP
php小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
php实现图片缩放功能类
2013/12/18 PHP
js option删除代码集合
2008/11/12 Javascript
jQuery 渐变下拉菜单
2009/12/15 Javascript
jQuery基本过滤选择器使用介绍
2013/04/18 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
jQuery中outerHeight()方法用法实例
2015/01/19 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
javascript回到顶部特效
2016/07/30 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
AngularJs验证重复密码的方法(两种)
2016/11/25 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
2018/09/03 Javascript
TypeScript中使用getElementXXX()的示例代码
2019/09/12 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
[01:02:03]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS VG
2014/05/26 DOTA
Python中基础的socket编程实战攻略
2016/06/01 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
对命令行模式与python交互模式介绍
2018/05/12 Python
解决Tensorflow使用pip安装后没有model目录的问题
2018/06/13 Python
详解重置Django migration的常见方式
2019/02/15 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
Python字典推导式将cookie字符串转化为字典解析
2019/08/10 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
Python如何实现感知器的逻辑电路
2020/12/25 Python
应用心理学个人求职信范文
2013/12/11 职场文书
工程技术员岗位职责
2014/03/02 职场文书
安全负责人任命书
2014/06/06 职场文书
求职简历自荐信
2014/06/18 职场文书
2014年接待工作总结
2014/11/26 职场文书
大学生违纪检讨书范文
2015/05/07 职场文书