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 相关文章推荐
js form action动态修改方法
Nov 04 Javascript
基于JQUERY的两个ListBox子项互相调整的实现代码
May 07 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
Aug 02 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
Dec 27 Javascript
浅谈重写window对象的方法
Dec 29 Javascript
AspNet中使用JQuery上传插件Uploadify详解
May 20 Javascript
js获取url传值的方法
Dec 18 Javascript
理解JavaScript原型链
Oct 25 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
Mar 22 jQuery
vue图片上传本地预览组件使用详解
Feb 20 Javascript
vue中img src 动态加载本地json的图片路径写法
Apr 25 Javascript
微信小程序实现音频文件播放进度的实例代码
Mar 02 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
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
php eval函数用法总结
2012/10/31 PHP
php实现获取及设置用户访问页面语言类
2014/09/24 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
jQuery实现为控件添加水印文字效果(附源码)
2015/12/02 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
2017/09/20 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
2018/06/13 Javascript
jQuery使用each遍历循环的方法
2018/09/19 jQuery
vue+element+Java实现批量删除功能
2019/04/08 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
2020/10/28 Javascript
python socket 超时设置 errno 10054
2014/07/01 Python
python基础教程之Hello World!
2014/08/29 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
django项目搭建与Session使用详解
2018/10/10 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
Python模块 _winreg操作注册表
2020/02/05 Python
python os.listdir()乱码解决方案
2021/01/31 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
Betsey Johnson官网:妖娆可爱的连衣裙及鞋子、手袋和配件
2016/12/30 全球购物
保加利亚运动鞋购物网站:SneakerStudio.bg
2020/12/23 全球购物
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
个人贷款担保书
2014/04/01 职场文书
团干部培训方案
2014/06/03 职场文书
财会专业大学生求职信
2014/09/26 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
学雷锋感言
2015/08/03 职场文书
优质服务标语口号
2015/12/26 职场文书
详解Nginx 被动检查服务器的存活状态
2021/10/16 Servers
Python代码实现双链表
2022/05/25 Python