jQuery简单倒计时插件
一、 效果预览

二、 实现
1. 按照特定的类结构布局。
2. 需要先引入jQuery,再引入此文件。
/**
* Author: CC11001100
*
* 简单倒计时
*
* 1. 支持页面内同时存在多个计时器并且不互相干扰
* 2. 支持多种格式,比如可以省略天、小时...等等,前面省略会自动加到后面,最多可以只有秒
* 3. 倒计时可以是秒数,可以是时间戳,可以是日期时间(设置一种即可)
*
* Usage:
*
* <div class="timer-simple-seconds" timer="3600" timestamp="1482737420000" datetime="2016-12-26 15:30:20">
* <span class="day">0</span>天
* <span class="hour">00</span>时
* <span class="minute">00</span>分
* <span class="second">00</span>秒
* </div>
*
*/
/**
* 按结构查找,依赖结构和class
*/
$(function(){ //对所有的计时器进行处理
var timers=$(".timer-simple-seconds");
for(var i=0;i<timers.length;i++){
var timer=$(timers[i]); if(timer.attr("timestamp")){
//如果是时间戳,则预处理一下时间为倒计时秒数
prepareProcessTimestamp2Timer(timer);
}else if(timer.attr("datetime")){
//处理时间格式为倒计时秒数
prepareProcessDatetime2Timer(timer);
}
//先调用一次,避免误差
processTimer(timer);
setInterval(processTimer,1000,timer);
} /**
* doWhat: 这个函数将时间戳预处理成统一的倒计时描述
*
* 对时间做一个预处理,因为如果服务器直接返回剩余的描述的话从服务器相应到客户端虽然短到几百毫秒但总是会有偏差的,这样子不太好
* 所以服务器只需要设置一个时间戳表示到哪里停止就可以了
*/
function prepareProcessTimestamp2Timer(timer){
var total=parseInt(timer.attr("timestamp"));
total=Math.round(total/1000);
var now=new Date().getTime()/1000;
timer.attr("timer",total-now);
} /**
* 将日期时间格式转为倒计时格式
*/
function prepareProcessDatetime2Timer(timer){
var timestamp=new Date(timer.attr("datetime")).getTime();
timer.attr("timestamp",timestamp);
prepareProcessTimestamp2Timer(timer);
} /**
* 倒计时,滴答滴答...
* @param {Object} timer
*/
function processTimer(timer){
var total=parseInt(timer.attr("timer"));
var t=total; //倒计时不能为负
if(total<0) return; //TODO 后续版本加上计时完毕可以回调函数 //找到显示时间的元素
var day=timer.find(".day");
var hour=timer.find(".hour");
var minute=timer.find(".minute");
var second=timer.find(".second"); //刷新计时器显示的值
if(day.length){
var d=Math.floor(t/(60*60*24));
day.text(d);
t-=d*(60*60*24);
}
if(hour.length){
var h=Math.floor(t/(60*60));
hour.text((h<10?"0":"")+h);
t-=h*(60*60);
}
if(minute.length){
var m=Math.floor(t/60);
minute.text((m<10?"0":"")+m);
t-=m*60;
}
if(second.length){
second.text((t<10?"0":"")+t);
} //一秒过去了...
total--;
timer.attr("timer",total);
} });
说明:
1. timer表示剩余的秒数,timestamp表示一个未来的unix时间戳,datetime表示一个yyyy-MM-dd HH:mm:ss格式的字符串表示的时间。
2. 三者只设置一个即可,同时设置会冲突的。
github地址: https://github.com/BenDanChen/simpleTimer
jQuery简单倒计时插件的更多相关文章
- jquery.countdown 倒计时插件的学习
1.第一种简单的使用 第一个时间是你的倒计时截止时间,finalDate格式可以是YYYY/MM/DD MM/DD/YYYY YYYY/MM/DD hh:mm:ss MM/DD/YYYY hh:mm: ...
- jQuery自适应倒计时插件
jQuery自适应倒计时插件 在线演示本地下载
- js 简单倒计时插件和使用方法
// 倒计时插件 (function (){ function countdown(config){ var startDate = config.start ? new Date(config.st ...
- jquery简单的插件
$(function() { $.fn.插件名称 = function(options) { var defaults = { Event : "click", //触发响应事件 ...
- jQuery简单日历插件版
先来看demo:http://codepen.io/jonechen/pen/xOgZMz 插件代码: ; (function($) { var Calendar = function(ele, op ...
- jquery简单切换插件
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- jQuery.countdown倒计时插件
https://github.com/hilios/jQuery.countdown 文档:http://hilios.github.io/jQuery.countdown/documentation ...
- jQuery倒计时插件
倒计时jQuery插件 引言 最近又换工作了,还不错,我换工作的次数其实有点频繁,2014年7月份毕业,到现在工作已经换了3份了,工资跟刚毕业时候相比也涨了点儿,最近一次换工作我离开了深圳,来到了北京 ...
- Cropper – 简单的 jQuery 图片裁剪插件
Cropper 是一个简单的 jQuery 图像裁剪插件.它支持选项,方法,事件,触摸(移动),缩放,旋转.输出的裁剪数据基于原始图像大小,这样你就可以用它们来直接裁剪图像. 如果你尝试裁剪跨域图像, ...
随机推荐
- Beta阶段项目终审报告
先上图 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件主要是用来解决玩狼人杀这款桌游时无牌.无法官.游戏流程不熟悉等情况的.我觉得我们对典型 ...
- EntityFramework错误:Unable to update the EntitySet because it has a DefiningQuery
错误截图: 解决方法: 在所操作的数据库表中添加一个主键即可解决此问题
- Java学习笔记--循环总结
关键字break和continue除了在switch语句中使用break,还可以在一个循环中使用break立即终止该循环. 循环语句有三类: while循环, do-while循环和for循环.循环中 ...
- OpenStack三种类型的NAT转换
SNAT SNAT即源网络地址转换,这个NAT路由修改IP包包头中的源IP地址.SNAT功能通常用于让只具有私有IP地址的主机能够访问外网,比如,多个PC使用路由器共享上网,每个PC都配置了内网IP, ...
- 常用的数据统计Sql 总结
最近刚在搞一个BI的项目,里面需要大量的sql 数据统计相关运用,加深了我又对SQL的理解与使用. 所以,分享几个数据统计时常用的sql 语句总结: 1. 统计各个条件下的数据 select Batc ...
- Eclipse Android环境搭建
1.先安装ADT,记得断开网络2.然后关闭Eclipse安装SDK,例如安装在C:\Users\Administrator\AppData\Local\Android\android-sdk3.重启E ...
- 文件IO操作..修改文件的只读属性
文件的IO操作..很多同行的IO工具类都是直接写..但是如果文件有只读属性的话..则会写入失败..所以附加了一个只读的判断和修改.. 代码如下: /// <summary> /// 创建文 ...
- 【转】ORACLE的REDO与UNDO
一.什么是redo?redo:oracle在在线或者归档重做日志文件中的记录的信息,外以出现失败时可以利用这些数据来"重放"事务.每个oracle数据都至少有二个在线重做日志组,每 ...
- Workflow 中做拒绝操作时强制输入拒绝信息
在做AP发票审批驳回时,客户要求必须强制输入拒绝原因,代码如下: PROCEDURE Validate_Response ( Itemtype IN VARCHAR2, Itemkey IN VARC ...
- mysqldump数据库同步遇到的问题
1.同步数据是遇到 没有 lock database权限,报 " mysqldump: Got error: 1044: Access denied for user 'spider_dat ...