天天看点

JavaScript写时间倒计时

JavaScript的两个计时器setInterval 和setTimeout 来简单的写一个当天的时间倒计时,主要就是时间的计算,先看下实现当天时间的倒计时,全部代码:

<html>
	<head>
		<meta charset="UTF-8"/>
		<title>count down</title>
		<style type="text/css">
			body{
				background-color: #00502D;
				color: #ffffff;
			}
			#show{
				position: absolute;
				bottom: 0;
				right: 20px;
			}
		</style>
	</head>
	<body>
		<h2 id="show"></h2>
		<script type="text/javascript">
			var fuTime = new Date("2018/6/26 18:00:00");
			var timer = "";
			//setInterval 延时1秒
//			timer = setInterval(function (){
//				var now = new Date();
//				var hour = parseInt((fuTime-now)/1000/60/60);
//				hour<10 && (hour = "0"+hour);
//				var min = parseInt((fuTime-now)%(1000*60*60)/1000/60);
//				min<10 && (min = "0"+min);
//				var sec = parseInt((fuTime-now)%(1000*60)/1000);
//				sec<10 && (sec = "0"+sec);
//				document.getElementById("show").innerHTML = hour+" : "+min+" : "+sec;
//				if(hour==0 && min==0 && sec==0){
//					clearTimeout(timer);
//					timer = null;
//				}
//			},1000);
			
			//setTimeout
			(function show(){
				var now = new Date();
				var hour = parseInt((fuTime-now)/1000/60/60);
				hour<10 && (hour = "0"+hour);
				var min = parseInt((fuTime-now)%(1000*60*60)/1000/60);
				min<10 && (min = "0"+min);
				var sec = parseInt((fuTime-now)%(1000*60)/1000);
				sec<10 && (sec = "0"+sec);
				document.getElementById("show").innerHTML = hour+" : "+min+" : "+sec;
				timer = setTimeout(show,1000);
				if(hour==0 && min==0 && sec==0){
					clearTimeout(timer);
					timer = null;
				}
			})();
			
		</script>
	</body>
</html>
           

其中两种方法都写了,也注释出来了,setInterval的话会有一秒的延时,我没有处理,如果想用这个方法,那就在计时器开始之前先计算结果把它显示一下就可以了

如果想要倒计时天数,那就这样写,只写JS部分:

var now = new Date();
var day = parseInt((fuTime-now)/1000/60/60/24);
var hour = parseInt((fuTime-now)%(1000*60*60*24)/1000/60/60);
var min = parseInt((fuTime-now)%(1000*60*60)/1000/60);
var sec = parseInt((fuTime-now)%(1000*60)/1000);
document.getElementById("show").innerHTML =day+" 天 "+ hour+" 小时 "+min+" 分钟 "+sec+" 秒 ";
timer = setTimeout(show,1000);
if(hour==0 && min==0 && sec==0){
	clearTimeout(timer);
	timer = null;
}
           

主要就是计算的麻烦一点

继续阅读