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 相关文章推荐
Javascript 函数中的参数使用分析
Mar 27 Javascript
让JavaScript和其它资源并发下载的方法
Oct 16 Javascript
javascript函数式编程实例分析
Apr 25 Javascript
通用无限极下拉菜单的实现代码
May 31 Javascript
Javascript中的神器——Promise
Feb 08 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
Mar 02 Javascript
.vue文件 加scoped 样式不起作用的解决方法
May 28 Javascript
微信小程序实现星级评分和展示
Jul 05 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
Feb 15 Javascript
Vue-Cli项目优化操作的实现
Oct 27 Javascript
如何基于filter实现网站整体变灰功能
Apr 17 Javascript
Vue elementui字体图标显示问题解决方案
Aug 18 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
操作Oracle的php类
2006/10/09 PHP
PHP下判断网址是否有效的代码
2011/10/08 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
PHP 错误处理机制
2015/07/06 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
js可突破windows弹退效果代码
2008/08/09 Javascript
js 数组克隆方法 小结
2010/03/20 Javascript
js静态方法与实例方法分析
2011/07/04 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
jquery选择器之层级过滤选择器详解
2014/01/27 Javascript
PHP+jQuery实现随意拖动层并即时保存拖动位置
2015/04/30 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
2016/09/17 Javascript
JavaScript获取URL中参数querystring的方法详解
2016/10/11 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
2017/05/02 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
弱类型语言javascript中 a,b 的运算实例小结
2019/08/07 Javascript
[06:16]DOTA2守卫传承者——职业选手谈心路历程
2015/02/26 DOTA
flask/django 动态查询表结构相同表名不同数据的Model实现方法
2019/08/29 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
基于Python正确读取资源文件
2020/09/14 Python
HTML5时代CSS设置漂亮字体取代图片
2014/09/04 HTML / CSS
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
Vertbaudet西班牙网上商店:婴儿服装、童装、母婴用品和儿童家具
2019/10/16 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
我爱祖国演讲稿
2014/09/02 职场文书
农村党支部书记党群众路线四风问题整改措施
2014/09/26 职场文书
民主评议党员总结
2014/10/20 职场文书
发展党员工作情况汇报
2014/10/28 职场文书
新党员入党决心书
2015/09/22 职场文书
Vue详细的入门笔记
2021/05/10 Vue.js
vue+springboot实现登录验证码
2021/05/27 Vue.js