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实例教程(19) 使用HoTMetal(7)
Dec 23 Javascript
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
Jan 16 Javascript
防止动态加载JavaScript引起的内存泄漏问题
Oct 08 Javascript
验证javascript中Object和Function的关系的三段简单代码
Jun 27 Javascript
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
Jan 08 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
Jan 10 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
Apr 21 Javascript
Js的Array数组对象详解
Feb 22 Javascript
浅谈JS中json数据的处理
Jun 30 Javascript
JS实现简单的tab切换选项卡效果
Sep 21 Javascript
在Vue中使用echarts的方法
Feb 05 Javascript
原生js实现日历效果
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
apache中为php 设置虚拟目录
2014/12/17 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
PHP 对象继承原理与简单用法示例
2020/04/21 PHP
基于jquery的图片懒加载js
2010/06/30 Javascript
基于jquery的文本框与autocomplete结合使用(asp.net+json)
2012/05/30 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
浅析jQuery操作select控件的取值和设值
2016/12/07 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
web前端vue filter 过滤器
2018/01/12 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
2019/05/26 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
基于Express框架使用POST传递Form数据
2019/08/10 Javascript
解决layui下拉框监听问题(监听不到值的变化)
2019/09/28 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
Python实现的多线程同步与互斥锁功能示例
2017/11/30 Python
Python AES加密实例解析
2018/01/18 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
2018/11/07 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
人事专员工作职责
2014/02/22 职场文书
我爱我校演讲稿
2014/05/21 职场文书
北京奥运会主题口号
2014/06/13 职场文书
工作骂脏话检讨书
2014/10/05 职场文书
先进个人总结范文
2015/02/15 职场文书
公司考勤管理制度
2015/08/04 职场文书
P站美图推荐——变身女主角特辑
2022/03/20 日漫