倒计时网上一大堆,所以也没有什么好说的,支持:1.年,月,日,天,时分秒等倒计时。

JS代码如下:

/*
* js简单的倒计时
* @param {date,obj} 日期 对象格式
*/ function CountDown(date,obj) {
var self = this;
self.date = date;
self.obj = obj;
self._init();
}; $.extend(CountDown.prototype,{ _init: function(){
var self = this,
obj = self.obj;
var dateTime = self._calculateTime(); if(obj.sec) {
$(obj.sec).html(dateTime.sec);
}
if(obj.mini) {
$(obj.mini).html(dateTime.mini);
}
if(obj.hour) {
$(obj.hour).html(dateTime.hour);
}
if(obj.day) {
$(obj.day).html(dateTime.day);
}
if(obj.month) {
$(obj.month).html(dateTime.month);
}
if(obj.year) {
$(obj.year).html(dateTime.year);
}
// setInterval 会有误差 大概每小时有5秒的误差 故用setTimeout做计时器 精准更高
t && clearTimeout(t);
var t = setTimeout(function(){
self._init();
}, 1000);
},
_zero: function(n){
var n = parseInt(n,10);
if(n > 0) {
if(n < 10) {
n = "0" + n;
}
return String(n);
}else {
return n = "00";
}
},
_calculateTime: function(){
var self = this,
date = self.date || Date.UTC(2050, 0, 1);
var end = new Date(date),
now = new Date(); // getTimezoneOffset() 方法可返回格林威治时间和本地时间之间的时差,以分钟为单位。
var leftTime = Math.round((end.getTime() - now.getTime())/1000) + end.getTimezoneOffset() * 60;
var obj = {
sec: "00",
mini: "00",
hour: "00",
day: "00",
month: "00",
year: "0"
};
if(leftTime > 0) {
obj.sec = self._zero(leftTime % 60);
obj.mini = Math.floor(leftTime / 60) > 0 ? self._zero(Math.floor(leftTime / 60) % 60) : "00";
obj.hour = Math.floor(leftTime / 3600) > 0 ? self._zero(Math.floor(leftTime/3600) % 24) : "00";
obj.day = Math.floor(leftTime / (24 * 3600)) > 0 ? self._zero(Math.floor(leftTime / (24*3600)) % 30) : "00";
obj.month = Math.floor(leftTime / (30 * 24 * 3600)) > 0 ? self._zero(Math.floor(leftTime / (30 * 24 * 3600)) % 12) : "00";
//年份,按按回归年360天秒算
obj.year = Math.floor(leftTime / (360 * 30 * 24 * 3600)) > 0 ? Math.floor(leftTime / (360 * 30 * 24 * 3600)) : "0";
}
return obj;
}
});

假如HTML如下:

<span class="hour"></span>时 <span class="mini"></span>分 <span class="sec"></span>秒

那么我们可以这样初始化代码:

var d = 1419509471000;
//var d = Date.UTC(2030, 6, 27, 16, 34);
var obj = {
sec: $(".sec"),
mini: $(".mini"),
hour: $(".hour")
}
new CountDown(d, obj);

JSfiddler倒计时演示

JS简单的倒计时(代码优化)的更多相关文章

  1. JS全选功能代码优化

    原文:JS全选功能代码优化 JS全选功能代码优化 最近在看javascript MVC那本书,也感觉到自己写的代码也并不优雅,所以一直在想 用另一种模式来编写JS代码,所以针对之前的简单的JS全选功能 ...

  2. js简单 图片版时钟,带翻转效果

    js简单 图片版时钟,带翻转效果 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  3. js简单操作Cookie

    贴一段js简单操作Cookie的代码: //获取指定名称的cookie的值 function getCookie(objName) { var arrStr = document.cookie.spl ...

  4. js简单弹出层、遮罩层

    <html> <head> <title>js简单弹出层</title> <style> /*阴影边框效果*/ .box-shadow-1 ...

  5. Tourist.js – 简单灵活的操作指南和导航插件

    Tourist.js 是一个基于 Backbone 和 jQuery 开发的轻量库,帮助你在应用程序创建简单易用的操作指南和导航功能.相比网站,它更适合用于复杂的,单页网站类型的应用程序.Touris ...

  6. JavaScript学习笔记-简单的倒计时跳转页面

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  7. js简单显示和隐藏div,触发超链接,动态更改button值,setInterval()简单使用,jquery easyui弹出框简单使用 .

    js简单显示和隐藏div .<!DOCTYPE html> .<html> .<head> .<meta charset="UTF-8"& ...

  8. Gulp.js - 简单、直观的自动化项目构建工具

    Gulp.js 是一个简单.直观的构建系统.崇尚代码优于配置,使复杂的任务更好管理.通过结合 NodeJS 的数据流的能力,你能够快速构建.通过简单的 API 接口,只需几步就能搭建起自己的自动化项目 ...

  9. JS实现自动倒计时

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

随机推荐

  1. 在IDEA里创建web项目,以及web 项目部署

    在IDEA里创建web项目很简单: 1).先创建一个简单的maven项目,这个步骤我就不说了. 2).maven项目创建完后,因为我们需要的是web项目,因此我们要在pom.xml文件里设置packa ...

  2. jQuery获取json数据

    出自---小瓶子编辑 $.each()方法接受两个参数,第一个是需要遍历的对象集合(JSON对象集合),第二个是用来遍历的方法,这个方法又接受两个参数,第一个是遍历的index,第二个是当前遍历的值. ...

  3. onlyoffice文档协作的权限开发,利用casbin和golang语言

    登录用户,对于已经进行了权限设置的文档,将根据权限数据库,比对用户名,当与用户有关时,就显示相对应的权限,当都与登录用户无关时,则显示拒绝访问: 对于未登录用户,已经设置了权限的文档,都将显示拒绝访问 ...

  4. 本地用maven搭建SpringMvc+redis集成

    ---恢复内容开始--- 首先本地需要搭建私服,简单说一下搭建私服的步骤 1.为什么使用Nexus 如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而 ...

  5. JAVA:函数的定义、使用

      本文内容: 什么是函数 函数的定义格式 函数的重载(overload): 函数的调用使用注意 关于形式参数的使用 首发时间:2017-06-23 修改时间:2018-03-21:修改了布局,修改了 ...

  6. Azure 门户中基于角色的访问控制入门

    面向安全的公司应侧重于向员工提供他们所需的确切权限. 权限过多,可能会向攻击者公开帐户. 权限太少意味着员工无法有效地完成其工作. Azure 基于角色的访问控制 (RBAC) 可通过为 Azure ...

  7. Oracle EBS INV更新保留

    CREATE or REPPLACE PROCEDURE UpdateReservation AS -- Common Declarations l_api_version NUMBER := 1.0 ...

  8. SQL SERVER怎样将某个服务器上面的数据自动备份到另一台服务器上面(异地备份)

    一:试验背景 异地备份好处:(待补充) 1:异地备份了把原有服务器数据放在另外一个位置,避免些物理损害.  比把数据刻录光盘和原始数据放同房间了房间失火了备份数据也没有了要放另外地方避免了  就是备份 ...

  9. Qt简介 及与MFC、GDK+的比较

    Qt C++图形用户界面应用程序开发框架. Qt的由来和发展 1.QT由来 Haavard Nord 和Eirik Chambe-Eng于1991年开始开发"Qt",1994年3月 ...

  10. 转:queue

    数据结构C#版笔记--队列(Quene)   队列(Quene)的特征就是“先进先出”,队列把所有操作限制在"只能在线性结构的两端"进行,更具体一点:添加元素必须在线性表尾部进行, ...