原生js实现节日时间倒计时功能


Posted in Javascript onJanuary 18, 2017

知识要点

1.实现原理:

用结束时间-当前时间=时间差

当前时间每过1秒时间差自然也就少了1秒

所以要1秒更新一次当前时间就达到了倒计时的效果

2.需要注意的就是时间之间的转换和对得出数值的处理

3.用到的方法:

obj.getTime() //换算成毫秒
Math.floor() //把小数点向下舍入结果取一个整数
50%24 // 这是对数值求余的方法,意思是 假如有50个小时,一天24个小时 这个得出的结果就是 余数是2

具体的数值的运算处理完整代码里有详细的注释

完整代码

注:代码附带显示当前时间的标准格式以及倒计时天数

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>demo</title>
<style>
body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{margin:0;padding:0;}
h1,h2,h3,h4,h5,h6{font-size:100%;}
address,cite,dfn,em,var{font-style:normal;}
code,kbd,pre,samp{font-family:courier new,courier,monospace;}
ul,ol{list-style:none;}
a{text-decoration:none;}
a:hover{text-decoration:none;}
sup{vertical-align:text-top;}
sub{vertical-align:text-bottom;}
legend{color:#000;}
fieldset,img{border:0;}
button,input,select,textarea{font-size:100%;}
table{border-collapse:collapse;border-spacing:0;}
.clear{clear: both;float: none;height: 0;overflow: hidden;}
</style>
</head> 
<body>
 <div id="time"></div>
 <br/>
 <div id="day"></div>
 <br/>
 <div id="tm"></div>
 <script type="text/javascript"> 
 //在页面加载完后立即执行多个函数完美方案。
 function addloadEvent(func){
  var oldonload=window.onload;
  if(typeof window.onload !="function"){
   window.onload=func;
  }
  else{
   window.onload=function(){
    if(oldonload){
     oldonload(); 
    }
    func();
   }
  }
 }
 addloadEvent(showTime);
 addloadEvent(day);
 addloadEvent(tb);
 //在页面加载完后立即执行多个函数完美方案over。
 //天时秒分倒计时
 function tb(){
 var myDate=new Date();//获取当前时间
 var endtime=new Date("2018,1,1");//获取结束时间
 //换算成秒 小数点向下舍入取整
 var ltime=Math.floor((endtime.getTime()-myDate.getTime())/1000);
 //console.log(ltime)
 //换算成天 小数点向下舍入取整
 var d=Math.floor(ltime/(24*60*60));
 //换算成小时取去掉天数的余数(也就是小时) 小数点向下舍入取整
 var h=Math.floor(ltime/(60*60)%24);
 //换算成分钟取去掉小时的余数(也就是分钟) 小数点向下舍入取整
 var m=Math.floor(ltime/60%60);
 //换算成分钟取去掉分钟的余数(也就是秒) 小数点向下舍入取整
 var s=Math.floor(ltime%60);
 document.getElementById("tm").innerHTML="距2018年元旦还有:"+d+"天"+h+"小时"+m+"分钟"+s+"秒";
 if(ltime<=0){
  document.getElementById("tm").innerHTML="元旦快乐!";
  clearTimeout(tb);
 }
 setTimeout(tb,1000);
 }
 //当秒数为个位数时前面+字符串0
 function checkTime(i){
 return i<10? "0"+i:""+i;
 }
 //当前时间标准格式
 function showTime(){
 var myDate=new Date();//获取当前时间
 var year=myDate.getFullYear();//获取年份
 var month=myDate.getMonth()+1;//获取月份是0-11的数字所以+1
 var date=myDate.getDate();//日
 var day=myDate.getDay();//
 var h=myDate.getHours();//小时
 var m=myDate.getMinutes();//分钟
 var s=myDate.getSeconds();//秒
 checkTime(m);
 checkTime(s);
 //console.log(day)
 var week="日一二三四五六".charAt(day);
 document.getElementById("time").innerHTML=year+"年"+month+"月"+date+"日"+"星期"+week+h+":"+m+":"+s;
 setTimeout(showTime,1000); 
 }
 //倒计时天数计算
 function day(){
 var myDate=new Date();//获取当前时间
 var endtime=new Date("2018,1,1");//获取结束时间
 //先换算成毫秒再相减就是时间差,再除以一天的毫秒数结果是带有小数点的,用math方法进一位取整
 var ltime=Math.ceil((endtime.getTime()-myDate.getTime())/(24*60*60*1000));
 document.getElementById("day").innerHTML="距2018年元旦还有:"+ltime+"天";
 }
 </script>
</body> 
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
Aug 28 Javascript
密码框显示提示文字jquery示例
Aug 29 Javascript
jQuery封装的获取Url中的Get参数示例
Nov 26 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
Oct 22 Javascript
Javascript基于AJAX回调函数传递参数实例分析
Dec 15 Javascript
基于JavaScript实现智能右键菜单
Mar 02 Javascript
ES6新特性七:数组的扩充详解
Apr 21 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
Sep 20 Javascript
Vue filter介绍及其使用详解
Oct 21 Javascript
javascript trie前缀树的示例
Jan 29 Javascript
redux中间件之redux-thunk的具体使用
Apr 17 Javascript
利用uni-app生成微信小程序的踩坑记录
Apr 05 Javascript
原生js实现返回顶部缓冲效果
Jan 18 #Javascript
详解jquery validate实现表单验证 (正则表达式)
Jan 18 #Javascript
原生js实现中奖信息无间隙滚动效果
Jan 18 #Javascript
js实现简单的网页换肤效果
Jan 18 #Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
Jan 18 #Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
Jan 18 #Javascript
jQuery Masonry瀑布流插件使用方法详解
Jan 18 #Javascript
You might like
PHP入门教程之图像处理技巧分析
2016/09/11 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
jquery表单验证使用插件formValidator
2012/11/10 Javascript
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
javascript setTimeout和setInterval计时的区别详解
2013/06/21 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
javascript面向对象之访问对象属性的两种方式分析
2015/01/13 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
2015/08/24 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
三种Node.js写文件的方式
2016/03/08 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
基于vue配置axios的方法步骤
2017/11/09 Javascript
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
jquery-ui 进度条功能示例【测试可用】
2019/07/25 jQuery
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
JavaScript中的几种继承方法示例
2020/12/06 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
Python的面向对象思想分析
2015/01/14 Python
Python3爬楼梯算法示例
2019/03/04 Python
python hough变换检测直线的实现方法
2019/07/12 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
python如何将多个PDF进行合并
2019/08/13 Python
Python循环实现n的全排列功能
2019/09/16 Python
Volcom英国官方商店:美国殿堂级滑板、冲浪、滑雪服装品牌
2019/03/13 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
文秘个人求职信范文
2014/04/22 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
森林防火标语
2014/06/23 职场文书
股东授权委托书
2014/10/15 职场文书
2014年招商工作总结
2014/11/22 职场文书
教师节领导致辞
2015/07/29 职场文书
2016年党员承诺书范文
2016/03/24 职场文书
Python 语言实现六大查找算法
2021/06/30 Python