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 图像裁剪插件.它支持选项,方法,事件,触摸(移动),缩放,旋转.输出的裁剪数据基于原始图像大小,这样你就可以用它们来直接裁剪图像. 如果你尝试裁剪跨域图像, ...
随机推荐
- 定位框一闪而过 iOS Swift
需求:获取经纬度. 方案:我自定义了一个类模块CLLocationModule.swift 备注以下代码里 let IS_IOS8 = (UIDevice.currentDevice().system ...
- HTML5规范-相关资料链接(大多都是英文文档)
网站做的更规范,尽量选择正确的HTML5结构元素.地址:http://html5doctor.com/happy-1st-birthday-us/#flowchat 了解算法和分块 知道文档 ...
- Sed、Awk单行脚本快速参考
文本间隔: # 在每一行后面增加一空行 sed G awk '{printf("%s\n\n",$0)}' # 将原来的所有空行删除并在每一行后面增加一空行. # 这样在输出的文本 ...
- Spring MVC学习笔记——完整的用户登录
1.搭建环境的第一步是导包,把下面这些包都导入工程中 /media/common/工作/Ubuntu软件/SpringMVC_jar包整理/aop/media/common/工作/Ubuntu软件/S ...
- nginx安装与配置
一.在线安装 ubuntu 安装 sudo apt-get install nginx 安装后文件结构为: 配置文件:/etc/nginx ,并且每台虚拟主机已经安排在 /etc/nginx/site ...
- 多材质(Shader)实现
最近在cocos creator上打算写个U3D中shader功能的插件(能在属性面板调整shader属性). 对其中一个功能有点疑惑,就是U3D中一个渲染物体上可以挂多个材质,后来查询了下,一个物体 ...
- 用Python生成测试数据
转载自:http://blog.csdn.net/caz28/article/details/45972109 有时我们需要大量的数据,一般编个程序生成一堆随机数据,Python很适合文本处理,干这个 ...
- NOI2016滚粗记
首先明确,博主是个渣渣... 7月19日 出发啦,准备去哈尔滨,临走时爸爸迟迟不肯离去站台口,凝望着我,心理很感动..内心的压力瞬间增大2333,附候车室图片.. 在火车上怎么也睡不着2333 7月2 ...
- [BZOJ1014][JSOI2008]火星人prefix
[BZOJ1014][JSOI2008]火星人prefix 试题描述 火星人最近研究了一种操作:求一个字串两个后缀的公共前缀.比方说,有这样一个字符串:madamimadam,我们将这个字符串的各个字 ...
- Linux下用户组、文件权限详解
在linux中的每个用户必须属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念 - 所有者 - 所在组 - 其它组 - 改变用户所在的组 所有者 一般为文件的创建者,谁创 ...