關于之前和現在setTimeout問題
window.onload=function(){
? FrashTime()
?}
? ? function FrashTime(){ ? ??
? ? ?var endtime = new Date("2016/10/7,9:54:00");
? ? ? var ?nowtime= new Date();
? ? ? ?var lefttime=parseInt((endtime.getTime()-nowtime.getTime())/1000);
? ? ? ? ?var time =50;
? ? ? ? var d=parseInt(lefttime/(24*60*60));
? ? ? ? var h=parseInt(lefttime/(60*60)%24);
? ? ? ?var m=parseInt(lefttime/60%60);
? ? ? ?var s=parseInt(lefttime%60);
? ?document.getElementById("LeftTime").innerHTML=d+"天"+h+"小時"+m+"分"+s+"秒"
? ?if(lefttime<=0){
? ? document.getElementById("LeftTime").innerHTML="團購已經結束"
? ?}
?
? ? ? ?setTimeout(FrashTime,time);
? ? ? ?
} ??
??
按照他講的只執行一次為什么setTimeout可以在限時搶中顯示計時器功能
2016-09-08
寫個清楚點的:
1、根據window.onload=function(){?FrashTime()?},執行FrashTime,一直執行到setTimeout;
2、根據setTimeout(FrashTime,time),延遲time后,繼續執行一次FrashTime,一直執行到setTimeout;
3、根據setTimeout(FrashTime,time),延遲time后,繼續執行一次FrashTime,一直執行到setTimeout;
就這么循環下去了,如果將setTimeout寫在函數外面,就是只執行一次的效果
2016-09-08
因為setTimeout在FrashTime函數里面調用了,相當于在FrashTime內部執行,然后再去執行setTimeout(FrashTime,time)(即延遲time后再次執行setTimeout),然后繼續執行FrashTime,就是一個循環了,這就叫遞歸調用