JavaScript实现的一个倒计时的类


Posted in Javascript onMarch 12, 2015

近期在做排列五的彩票项目,每一期都有购彩时段,即用户打开这个排列五的页面时,会从服务器传来一个remaintime(离本次彩期结束的剩余时间),然后这个时间在客户端递减呈现给用户看,让用户获得本次彩期的剩余时间。

实现原理挺简单的,在此不在赘述,运行以下代码查看demo:

<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>index</title>
<style type="text/css">
em{color:#f00;}
</style>
</head>

<body>
<div id="remaintime"></div>
<script type="text/javascript">

var TheTime = function(){
 this.init.apply(this,arguments);
};

TheTime.prototype = {
 init: function(obj){
 var that = this;
 obj = that.buildParam(obj);
 that.callback = obj.callback;
 var container = that.container = document.getElementById(obj.container);
 container.innerHTML = '<em></em>小时<em></em>分钟<em></em>秒';
 var hourSpace = that.hourSpace = container.getElementsByTagName('em')[0];
 var minuteSpace = that.minuteSpace = container.getElementsByTagName('em')[1];
 var secondSpace = that.secondSpace = container.getElementsByTagName('em')[2];
 if(obj.remaintime==0){
  that.resetTime();
  return;
 }

 that.hours = Math.floor(obj.remaintime/3600);
 that._remainder1 = obj.remaintime % 3600;
 that.minutes = Math.floor(that._remainder1/60);
 that.seconds = that._remainder1 % 60;
 var timer = that.timer = setInterval(function(){
  that.renderTime.apply(that);
 },1000);
 },
 buildParam: function(obj){
 obj = {
  //container为dom节点的id
  container: obj.container || 'container',
  remaintime: Number(obj.remaintime) || 0,
  //倒计时完成后的回调
  callback: obj.callback || new Function
 };
 return obj;
 },
 resetTime: function(){
 var that = this;
 that.container.innerHTML = "已经截止";
 },
 //刷新时间
 renderTime: function(){
 //debugger;
 var that = this;
 if(that.seconds>0){
  that.seconds--;
 }else{
  that.seconds = 59;
  if(that.minutes>0){
  that.minutes--;
  }else{
  that.minutes = 59;
  if(that.hours>0){
   that.hours--;
  }
  }
 }
 
 //时刻监听
 if(that.hours==0 && that.minutes==0 && that.seconds==0){
  //执行回调
  that._callback();
 }
 var bitHandle = that.bitHandle;

 var _hour = bitHandle(that.hours);
 var _minute = bitHandle(that.minutes);
 var _second = bitHandle(that.seconds);
 that.hourSpace.innerHTML = _hour;
 that.minuteSpace.innerHTML = _minute;
 that.secondSpace.innerHTML = _second;
 },
 //对于位数的处理,确保返回两位数
 bitHandle: function(num){
 var str = num.toString();
 if(str.length<2){
  str = 0 + str;
 }
 return str;
 },
 _callback: function(){
 var that = this;
 clearInterval(that.timer);
 that.callback();
 }

};

new TheTime({
 //容器id
 container: 'remaintime',
 //服务器返回的剩余时间,单位为秒
 remaintime: 10000,
 //倒计时完成时的回调
 callback: function(){
 document.getElementById('remaintime').innerHTML = '已截止';
 }
});
</script>
</body>
</html>
Javascript 相关文章推荐
IE与FireFox的兼容性问题分析
Apr 22 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
Aug 28 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
May 08 Javascript
AngularJS基础 ng-cloak 指令简单示例
Aug 01 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
Mar 25 Javascript
在vscode里使用.vue代码模板的方法
Apr 28 Javascript
vue2.0 实现导航守卫(路由守卫)
May 21 Javascript
Vue高版本中一些新特性的使用详解
Sep 25 Javascript
利用jquery和BootStrap实现动态滚动条效果
Dec 03 jQuery
详解JavaScript 的变量
Mar 08 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
Oct 17 Javascript
详解JavaScript中的Object.is()与&quot;===&quot;运算符总结
Jun 17 Javascript
JavaScript将XML转成JSON的方法
Mar 12 #Javascript
JavaScript中诡异的delete操作符
Mar 12 #Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
Mar 12 #Javascript
jquery实现页面关键词高亮显示的方法
Mar 12 #Javascript
JavaScript设计模式学习之“类式继承”
Mar 12 #Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
Mar 12 #Javascript
JavaScript中return false的用法
Mar 12 #Javascript
You might like
收音机的保养
2021/03/01 无线电
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
Laravel中Trait的用法实例详解
2016/03/16 PHP
基于php判断客户端类型
2016/10/14 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
jquery each()源代码
2011/02/14 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
JS交换变量的方法
2015/01/21 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
js数组去重的5种算法实现
2015/11/04 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
举例讲解Python编程中对线程锁的使用
2016/07/12 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
2018/01/04 Python
python队列Queue的详解
2019/05/10 Python
使用Python做垃圾分类的原理及实例代码附源码
2019/07/02 Python
Python学习笔记之lambda表达式用法详解
2019/08/08 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
药物学专业学生的自我评价
2013/10/27 职场文书
幼儿园义卖活动方案
2014/01/17 职场文书
潘婷洗发水广告词
2014/03/14 职场文书
工地例会施工汇报材料
2014/08/22 职场文书
庆祝国庆节标语
2014/10/09 职场文书
综治维稳工作汇报
2014/10/27 职场文书
学习心理学的体会
2014/11/07 职场文书
小学校本教研总结
2015/08/13 职场文书
关于做家务的心得体会
2016/01/23 职场文书
高中信息技术教学反思
2016/02/16 职场文书
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis