<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>javascript计时器</title><style>.box{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:40px;}.font_size{font-size:40px;}</style></head><body><divclass="box"><div><div><label>当前时间:</label></div><div><spanid="current"></span></div></div><div><div>截至时间:</br>(截至时间需大于当前时间)</div><div><inputtype="text"class="font_size"id="endDate"placeholder="请输入截至日期"style="border: none;outline: none;"/></div><divstyle="margin-top: 10px;margin-left: 20px;"><buttonid="beginTime"class="font_size">开始倒计时</button><buttonid="endTime"class="font_size">停止倒计时</button></div><divid="time"style="display: block;margin-top: 10px;margin-left: 25px;"><spanid="_d">00</span><spanid="_h">00</span><spanid="_m">00</span><spanid="_s">00</span><spanid="_ms">00</span></div></div></div><scripttype="text/javascript">//初始化
document.getElementById("endDate").value =getDateYMDH();
document.getElementById("time").style.display="none";//开始倒计时
document.getElementById("beginTime").onclick=function(){
document.getElementById("time").style.display="block";countTime();}//停止倒计时
document.getElementById("endTime").onclick=function(){
document.getElementById("time").style.display="none";countTime();}//显示当前时间functiongetCurrent(){
document.getElementById("current").innerHTML =getDateFormate();//递归每秒调用countTime方法,显示动态时间效果setTimeout(getCurrent,100);}getCurrent();functioncountTime(){var date =newDate();var now = date.getTime();var endDateStr = document.getElementById("endDate").value;if(endDateStr ==""||document.getElementById("time").style.display=="none"||newDate(endDateStr)<newDate()){
document.getElementById("time").style.display="none";return;}else{
document.getElementById("time").style.display="block";}var endDate =newDate(endDateStr);//设置截止时间var end = endDate.getTime();var leftTime = end - now;//时间差 var d, h, m, s, ms;if(leftTime >=0){
d = Math.floor(leftTime /1000/60/60/24);
h = Math.floor(leftTime /1000/60/60%24);
m = Math.floor(leftTime /1000/60%60);
s = Math.floor(leftTime /1000%60);
ms = Math.floor(leftTime %1000);if(ms <100){
ms ="0"+ ms;}if(s <10){
s ="0"+ s;}if(m <10){
m ="0"+ m;}if(h <10){
h ="0"+ h;}}else{
console.log('已截止')}//将倒计时赋值到div中
document.getElementById("_d").innerHTML = d +"天";
document.getElementById("_h").innerHTML = h +"时";
document.getElementById("_m").innerHTML = m +"分";
document.getElementById("_s").innerHTML = s +"秒";
document.getElementById("_ms").innerHTML = ms +"毫秒";//递归每秒调用countTime方法,显示动态时间效果setTimeout(countTime,100);}//获取当前时间functiongetDateFormate(){var now =newDate();return now.getFullYear()+"-"+(now.getMonth()+1)+"-"+now.getDate()+" "+now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+"."+now.getMilliseconds();}//获取当前时间functiongetDateYMDH(){var now =newDate();return now.getFullYear()+"-"+(now.getMonth()+1)+"-"+now.getDate()+" 00:00:00";}</script></body></html>