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评估用户输入密码的强度实现代码
Nov 30 Javascript
JS 实现Json查询的方法实例
Apr 12 Javascript
js监听键盘事件示例代码
Jul 26 Javascript
javascript列表框操作函数集合汇总
Nov 28 Javascript
javascript中style.left和offsetLeft的用法说明
Mar 07 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
May 22 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
Sep 08 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
Dec 14 Javascript
laydate.js日期时间选择插件
Jan 04 Javascript
JS轮播图中缓动函数的封装
Nov 25 Javascript
canvas实现弧形可拖动进度条效果
May 11 Javascript
适合前端Vue开发童鞋的跨平台Weex的使用详解
Oct 16 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
Flash空降上海 化身大魔王接受挑战
2020/03/02 星际争霸
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
2015/10/19 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
jquery插件珍藏(图片局部放大/信息提示框)
2013/01/08 Javascript
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
浅谈jQuery构造函数分析
2015/05/11 Javascript
javascript验证手机号和实现星号(*)代替实例
2016/08/16 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
js原生实现FastClick事件的实例
2016/11/20 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
jquery横向纵向鼠标滚轮全屏切换
2017/02/27 Javascript
JS排序之冒泡排序详解
2017/04/08 Javascript
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
Node.js简单入门前传
2017/08/21 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
2017/12/26 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
js+SVG实现动态时钟效果
2018/07/14 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
微信小程序 WXML节点信息查询详解
2019/07/29 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
2019/11/09 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
python实现智能语音天气预报
2019/12/02 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
2020/01/20 Python
TFRecord格式存储数据与队列读取实例
2020/01/21 Python
Python基础之字符串常见操作经典实例详解
2020/02/26 Python
python 将Excel转Word的示例
2021/03/02 Python
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
婚礼司仪主持词
2014/03/14 职场文书
班主任经验交流会主持词
2014/04/01 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
考试后的感想
2015/08/07 职场文书
安全教育日主题班会
2015/08/13 职场文书
导游词之山西-五老峰
2019/10/07 职场文书