因为平常工作中很常用到该功能,所以就利用这次国庆假期,重新梳理与对原有代码进行改善,再集成一个常用的功能,最终封装出这个“简单倒计时”功能。
该倒计时方法具有以下该功能:
1. 根据指定日期与当前的电脑时间进行匹配
2. 通过指定一个数组参数,来设置在每一天内不同的时间段进行倒计时。
* 该方法还未通过实际工作的检测,稳定性未知(如果实际工作通过,会删除这段话)
1 function countDown(date,target,filter){ 2 3 var setTime = new Date(date).getTime(), 4 timer = null; 5 6 function core(){ 7 var nowTime = new Date().getTime(), 8 leftTime = 0, 9 d = 0,h = 0,m = 0,s = 0; 10 11 //////////////////////////// 12 //conditation @ doublue time 13 if(filter.length){ 14 setTime = new Date(); 15 for(var i=0,l=filter.length;i<l;i++){ 16 setTime.setHours(filter[i]); 17 setTime.setMinutes(0); 18 setTime.setSeconds(0); 19 if(nowTime < setTime.getTime()){ 20 break; 21 }else if(i == filter.length-1){ 22 setTime.setDate(setTime.getDate()+1); 23 setTime.setHours(filter[0]); 24 } 25 26 } 27 } 28 //////////////////////////// 29 30 leftTime = Math.ceil((setTime - nowTime)/1000); 31 if(nowTime <= setTime){ 32 d = ~~(leftTime/86400); 33 h = ~~(leftTime%86400/3600); 34 m = ~~(leftTime%86400%3600/60); 35 s = ~~(leftTime%86400%3600%60); 36 timer = setTimeout(core,1e3); 37 }else{ 38 clearTimeout(timer); 39 timer = null; 40 } 41 42 //here set out format 43 target.innerHTML = 'd:'+d+' h:'+h+' m:'+m+' s:'+s; 44 45 } 46 core(); 47 }
调用方式:
1 // 普通调用 2 countDown('2016/10/02/23:43',oDiv); 3 4 // 指定时间循环倒计时 5 countDown('2016/10/02/23:43',oDiv,[9,11,18]);