原生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 相关文章推荐
javascript数组使用调用方法汇总
Dec 08 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
Aug 28 Javascript
Bootstrap树形控件使用方法详解
Jan 27 Javascript
jQuery根据表单name获取值的方法
May 24 Javascript
artDialog+plupload实现多文件上传
Jul 19 Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
Oct 13 Javascript
BootStrap实现轮播图效果(收藏)
Dec 30 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
May 15 Javascript
vue-router实现组件间的跳转(参数传递)
Nov 07 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
Dec 25 jQuery
纯js代码生成可搜索选择下拉列表的实例
Jan 11 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
Apr 18 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危险函数(disable_functions)
2012/02/23 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
随窗体滑动的小插件sticky源码
2013/06/21 Javascript
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
jQuery菜单插件superfish使用指南
2015/04/21 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
如何检查一个对象是否为空
2019/04/11 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
Django中对通过测试的用户进行限制访问的方法
2015/07/23 Python
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
python 切换root 执行命令的方法
2019/01/19 Python
Python之Class&amp;Object用法详解
2019/12/25 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
pytorch中的weight-initilzation用法
2020/06/24 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
数控技术专科生自我评价
2014/01/08 职场文书
公司年会主持词
2014/03/22 职场文书
外国人来华邀请函
2015/01/31 职场文书
邀请函格式范文
2015/02/02 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
针对吵架老公保证书
2015/05/08 职场文书