原生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 相关文章推荐
点击文章内容处弹出页面代码
Oct 01 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
Jul 15 Javascript
如何判断鼠标是否在DIV的区域内
Nov 13 Javascript
angularJS 入门基础
Feb 09 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
Mar 04 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
Aug 26 Javascript
jquery验证手机号是否正确实例讲解
Nov 17 Javascript
轻松实现Bootstrap图片轮播
Apr 20 Javascript
真正好用的js验证上传文件大小的简单方法
Oct 27 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
Feb 27 Javascript
js、jquery实现列表模糊搜索功能过程解析
Mar 27 jQuery
Javascript中Math.max和Math.max.apply的区别和用法详解
Aug 24 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 mb_convert_encoding文字编码的转换函数介绍
2011/11/10 PHP
PHP重定向的3种方式
2013/03/07 PHP
php中socket通信机制实例详解
2015/01/03 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
jquery 操作DOM的基本用法分享
2012/04/05 Javascript
兼容主流浏览器的iframe自适应高度js脚本
2014/01/10 Javascript
JavaScript中window.showModalDialog()用法详解
2014/12/18 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
vuex的简单使用教程
2018/02/02 Javascript
探究Python多进程编程下线程之间变量的共享问题
2015/05/05 Python
Python3.7中安装openCV库的方法
2018/07/11 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
Python3模拟登录操作实例分析
2019/03/12 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
VSCODE配置Markdown及Markdown基础语法详解
2021/01/19 Python
美国知名户外用品畅销中心:Sierra Trading Post
2016/07/19 全球购物
iPad和Surface Pro蓝牙键盘:Brydge
2018/11/10 全球购物
泰国在线书店:SE-ED
2020/06/21 全球购物
二年级数学教学反思
2014/01/21 职场文书
幼儿园庆六一游园活动方案
2014/01/29 职场文书
写求职信有什么意义
2014/02/17 职场文书
寄语是什么意思
2014/04/10 职场文书
关于安全的演讲稿
2014/05/09 职场文书
妇女干部培训方案
2014/05/12 职场文书
人大调研汇报材料
2014/08/14 职场文书
合作协议书格式
2014/08/19 职场文书
2014年工作总结及2015工作计划
2014/12/12 职场文书
指导老师鉴定意见
2015/06/05 职场文书
公司开业主持词
2015/07/02 职场文书
2016年公司“3.12”植树节活动总结
2016/03/16 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书