转:JS实现倒计时

前一阵子要用一个JS倒计时的功能,就从网上找了一个不错的,参考着改成自己需要的了,这里记录一下以备下次再用。原文链接找不到了,找到一个类似的,就姑且用这个。

原文链接:JS倒计时:从某个固定时间开始倒记(也不知道这篇是不是转载的我看的那篇,也是转载的)

转载内容:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>JS时间倒计时</title>
<script type="text/javascript">
var time_now_server,time_now_client,time_end,time_server_client,timerID;
 
time_end=new Date("2010/10/4 11:10:1");//结束的时间
time_end=time_end.getTime();
 
time_now_server=new Date("2010/10/04 10:10:1");//开始的时间
time_now_server=time_now_server.getTime();
 
time_now_client=new Date();
time_now_client=time_now_client.getTime();
 
time_server_client=time_now_server-time_now_client;
 
setTimeout("show_time()",1000);
 
function show_time()
{
 var timer = document.getElementById("timer");
 if(!timer){
 return ;
 }
 timer.innerHTML =time_server_client;
 
 var time_now,time_distance,str_time;
 var int_day,int_hour,int_minute,int_second;
 var time_now=new Date();
 time_now=time_now.getTime()+time_server_client;
 time_distance=time_end-time_now;
 if(time_distance>0)
 {
  int_day=Math.floor(time_distance/86400000)
  time_distance-=int_day*86400000;
  int_hour=Math.floor(time_distance/3600000)
  time_distance-=int_hour*3600000;
  int_minute=Math.floor(time_distance/60000)
  time_distance-=int_minute*60000;
  int_second=Math.floor(time_distance/1000)
 
  if(int_hour<10)
   int_hour="0"+int_hour;
  if(int_minute<10)
   int_minute="0"+int_minute;
  if(int_second<10)
   int_second="0"+int_second;
  str_time=int_day+"天"+int_hour+"小时"+int_minute+"分钟"+int_second+"秒";
  timer.innerHTML=str_time;
  setTimeout("show_time()",1000);
 }
 else
 {
  timer.innerHTML =timer.innerHTML;
  clearTimeout(timerID)
 }
}
</script>
</head>
 
<body>
<div id="timer">这里会被替换成例如:**天**小时**分钟**秒</div>
</body>
</html>

以下是我自己参考着改成需要的,大同小异:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>JS时间倒计时</title>
<script type="text/javascript">
var time_now_server,time_now_client,time_end,time_server_client,timerID;

time_end=new Date("2016/05/09 12:00:00").getTime();//结束时间
time_now_server=new Date("2016/05/09 9:00:00").getTime();//开始的时间
time_now_client=new Date().getTime();
time_server_client=time_now_server-time_now_client;

function show_time() {
	var timer = document.getElementById("timer");
	if (!timer) {
		return;
	}
	var time_now, time_distance, str_time;
	var int_day, int_hour, int_minute, int_second;
	var time_now = new Date();
	time_now = time_now.getTime() + time_server_client;
	time_distance = time_end - time_now;
	if (time_distance > 0) {
		int_day = Math.floor(time_distance / 86400000)
		time_distance -= int_day * 86400000;
		int_hour = Math.floor(time_distance / 3600000)
		time_distance -= int_hour * 3600000;
		int_minute = Math.floor(time_distance / 60000)
		time_distance -= int_minute * 60000;
		int_second = Math.floor(time_distance / 1000)
		if (int_hour < 10)
			int_hour = "0" + int_hour;
		if (int_minute < 10)
			int_minute = "0" + int_minute;
		if (int_second < 10)
			int_second = "0" + int_second;
		int_minute= parseInt(int_minute,10);
		int_second = parseInt(int_second,10);
		if(int_minute==0 && int_second){//0分0秒,也就是没有时间了
			timer.innerHTML = "0:0";
			clearTimeout(timerID);
			//其他操作
			return false;
		}else{
			str_time = int_hour+":"+int_minute + ":" + int_second;
			timer.innerHTML = str_time;
			timerID = setTimeout("show_time()", 1000);
		}
	} else {
		timer.innerHTML = timer.innerHTML;
		clearTimeout(timerID);
	}
}
</script>
</head>
 
<body onload="show_time();">
<h1 id="timer" style="font-weight:bold;color:red;margin-left:30px;"></h1>
</body>
</html>

注意点:JS里面的new Date()好像只能用/来格式化不能用-,如:

time_end=new Date("2016/05/09 12:00:00").getTime();//这样子是对的

time_end=new Date("2016-05-09 12:00:00").getTime();//这样子是错的,不能获取到指定的日期。

猜你喜欢

转载自1017401036.iteye.com/blog/2297232