原生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 第二课 操作包装集元素代码
Mar 14 Javascript
Javascript 实现的数独解题算法网页实例
Oct 15 Javascript
浅析js中的浮点型运算问题
Jan 06 Javascript
Javascript函数式编程简单介绍
Oct 11 Javascript
ClearTimeout消除闪动实例代码
Feb 29 Javascript
JS随机洗牌算法之数组随机排序
Mar 23 Javascript
Bootstrap滚动监听(Scrollspy)插件详解
Apr 26 Javascript
原生JS实现垂直手风琴效果
Feb 19 Javascript
javascript实现数字配对游戏的实例讲解
Dec 14 Javascript
JavaScript学习笔记之数组基本操作示例
Jan 09 Javascript
js实现删除li标签一行内容
Apr 16 Javascript
JS实现网站吸顶条
Jan 08 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中实现中文字符进制转换原理分析
2011/12/06 PHP
php读取csc文件并输出
2015/05/21 PHP
解读PHP中的垃圾回收机制
2015/08/10 PHP
php英文单词统计器
2016/06/23 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
关于javascript DOM事件模型的两件事
2010/07/22 Javascript
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
ES6之模版字符串的具体使用
2018/05/17 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
使用pygame模块编写贪吃蛇的实例讲解
2018/02/05 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
详解python Todo清单实战
2018/11/01 Python
python实现n个数中选出m个数的方法
2018/11/13 Python
人工神经网络算法知识点总结
2019/06/11 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
python中Mako库实例用法
2020/12/31 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
sort命令的作用和用法
2013/08/25 面试题
同学聚会欢迎辞
2014/01/14 职场文书
医疗纠纷协议书
2014/04/16 职场文书
中级会计大学生职业生涯规划书
2014/09/16 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
2014乡镇领导班子四风对照检查材料思想汇报
2014/10/05 职场文书
建筑安全员岗位职责
2015/02/15 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书