网页中的倒计时原理
在网页中我们可以看到很多的倒计时效果,这个实现原理也很简单。
倒计时指的是距离未来某个时间点的时间间隔。
所以:剩余时间=未来时间-现在时间;
我们分析一下:现在的时间点是变的,未来的某个时间点是不变的,所以剩余时间是一直变化的。我们假设有一个变量t
Var iNow=new Date(); //现在时间
Var iNew=new Date(2015,11,18,9,0,0); //未来某个时间点
说明:创建Date时间对象参数
数字形式:new Date(2015,11,18,9,0,0) //其中月份从0开始计算的
字符串形式:new Date(“december 12,2015 8:53:12”)
剩余时间var t=Math.floor((iNew-iNow)/1000)
下面分别计算天,时,分,秒
天:Math.floor(t/86400)
时:Math.floor(t%86400/3600)
分:Math.floor(t%86400%3600/60)
秒:Math.floor(t%60)
我们定义一个字符串用来暂时存储剩余时间
Var str=Math.floor(t/86400+”天”+Math.floor(t%86400/3600)+”时”
+Math.floor(t%86400%3600/60)+”分”+Math.floor(t%60)+”秒”
我们先把这个时间放在网页中:
Var body=document.body;
body.innerHTML=str;
现在有一个问题,这个时间是固定不变的,只有刷新一次才变一次,我们不可能做到每次都刷新页面看剩余时间,我们希望的是过一秒就变一次,这就用到了js中的定时器setinterval
结果如下:
<script>
window.onload=function(){
var obody=document.body;
var iNew = new Date(2015,11,18,15,50,40);
var iNow=null;
var t=0;
var str="";
setInterval(function(){
iNow = new Date();
t = Math.floor((iNew - iNow)/1000);
str = Math.floor(t/86400)+'天'+Math.floor(t%86400/3600)+'时'+Math.floor(t%86400%3600/60)+'分'+t%60+'秒';
obody.innerHTML=str;
}, 1000)
}
</script>
以上只是倒计时的一个简单的实现原理,当然网上还有各种各样的倒计时效果,但是万变不离其宗,只要掌握了原理,实现其他的效果才更容易上手,望我们在web前端这条道路上共勉。
相关文章
Vue - An In-Depth Guide to Lifecycle Hooks
发布时间:2025/02/21 浏览次数:117 分类:Vue
-
Vue has many lifecycle hooks, and it can be confusing to understand the meaning or purpose of each one. In this article, we will explain the function of each lifecycle hook and how to use them.
gulp学习之察言观色watch函数
发布时间:2017/04/15 浏览次数:1215 分类:WEB前端
-
gulp.watch函数是用来监听文件的变化,当文件发生变化以后,可以通过回调函数或者指定的任务执行相应的内容。
Gulp学习之委以重任task函数做了什么事情
发布时间:2017/04/14 浏览次数:1004 分类:WEB前端
-
gulp.task函数用来定义一个gulp要执行的任务,该函数有三个参数name、deps和fn。其具体的使用方式和注意事项使我们本章的重点内容。
gulp学习之你来我往 src和dest函数
发布时间:2017/04/13 浏览次数:4481 分类:WEB前端
-
gulp无疑是我接触过的最简单易用的。其配置参数简单,并且学习起来也很容易。本章介绍其两个函数src和dest。
gulp+browserify编译es6方法及常见错误解决
发布时间:2017/01/11 浏览次数:2334 分类:WEB前端
-
本篇介绍如何使用gulp和browserify来编译打包es6代码,并且提供一种对其过程中常见的一种错误的解决方案。
简单7步让你成为一名优秀的Web开发人员
发布时间:2016/03/03 浏览次数:523 分类:观点与感想
-
你想成为一名Web开发人员,有一个问题,在技术行业还没有经验。你可能上了很多课程并且也写了很多个人项目,但是简历上经验一栏却始终和你没有什么关系。转型到一个新的领域并