原生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 相关文章推荐
MVVM模式中ViewModel和View、Model有什么区别?
Jun 19 Javascript
基于insertBefore制作简单的循环插空效果
Sep 21 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
Oct 28 Javascript
基于jquery实现三级下拉菜单
May 10 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
Jul 07 Javascript
微信小程序 this和that详解及简单实例
Feb 13 Javascript
create-react-app修改为多页面支持的方法
May 17 Javascript
vuejs选中当前样式active的实例
Aug 22 Javascript
实例详解带参数的 npm script
May 28 Javascript
vue实现滑动超出指定距离回顶部功能
Jul 31 Javascript
layer关闭弹出窗口触发表单提交问题的处理方法
Sep 25 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
Apr 14 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
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
PHP+Tidy-完美的XHTML纠错+过滤
2007/04/10 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
php实现简易计算器
2020/08/28 PHP
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
JavaScript制作淘宝星级评分效果的思路
2020/06/23 Javascript
javascript中的作用域和闭包详解
2016/01/13 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
微信小程序scroll-view实现字幕滚动
2018/07/14 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
2018/09/03 Javascript
从零开始封装自己的自定义Vue组件
2018/10/09 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
vue配置多代理服务接口地址操作
2020/09/08 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
老生常谈Python进阶之装饰器
2017/05/11 Python
python如何实现内容写在图片上
2018/03/23 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
美国二手复古奢侈品包包购物网站:LXRandCo
2019/06/18 全球购物
美国儿童服装、家具和玩具精品店:Maisonette
2019/11/24 全球购物
感恩老师的演讲稿
2014/05/06 职场文书
日语专业求职信
2014/07/04 职场文书
争先创优活动总结
2014/08/27 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书
Java基础之this关键字的使用
2021/06/30 Java/Android