原生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 相关文章推荐
基于jQuery实现的水平和垂直居中的div窗口
Aug 08 Javascript
说说JSON和JSONP 也许你会豁然开朗
Sep 02 Javascript
Javascript原型链的原理详解
Jan 05 Javascript
基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
Jan 22 Javascript
jQuery EasyUI提交表单验证
Jul 19 Javascript
基于jQuery实现顶部导航栏功能
Dec 27 Javascript
jquery,js简单实现类似Angular.js双向绑定
Jan 13 Javascript
jQuery Masonry瀑布流布局神器使用详解
May 25 jQuery
创建简单的node服务器实例(分享)
Jun 23 Javascript
vue中component组件的props使用详解
Sep 04 Javascript
vue-better-scroll 的使用实例代码详解
Dec 03 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
Apr 26 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
filemanage功能中用到的lib.js
2007/04/08 Javascript
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
javascript中万恶的function实例分析
2011/05/25 Javascript
js中的string.format函数代码
2020/08/11 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
js表单登陆验证示例
2016/10/19 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
微信小程序仿RadioGroup改变样式的处理方案
2018/07/13 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
小程序自定义弹框效果
2020/11/16 Javascript
在Python的Flask框架中使用模版的入门教程
2015/04/20 Python
详解python中xlrd包的安装与处理Excel表格
2016/12/16 Python
Python适配器模式代码实现解析
2019/08/02 Python
Python 变量的创建过程详解
2019/09/02 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
python,Java,JavaScript实现indexOf
2020/09/09 Python
销售工作岗位职责
2013/12/24 职场文书
《太阳》教学反思
2014/02/21 职场文书
元旦促销方案
2014/03/15 职场文书
综合实践活动总结
2014/05/05 职场文书
货物运输服务质量承诺书
2014/05/29 职场文书
房产协议书范本2014
2014/09/30 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
办公用品管理制度
2015/08/04 职场文书
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers
Python PIL按比例裁剪图片
2022/05/11 Python
向Spring IOC 容器动态注册bean实现方式
2022/07/15 Java/Android