關(guān)于之前和現(xiàn)在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+"小時(shí)"+m+"分"+s+"秒"
? ?if(lefttime<=0){
? ? document.getElementById("LeftTime").innerHTML="團(tuán)購已經(jīng)結(jié)束"
? ?}
?
? ? ? ?setTimeout(FrashTime,time);
? ? ? ?
} ??
??
按照他講的只執(zhí)行一次為什么setTimeout可以在限時(shí)搶中顯示計(jì)時(shí)器功能
2016-09-08
寫個(gè)清楚點(diǎn)的:
1、根據(jù)window.onload=function(){?FrashTime()?},執(zhí)行FrashTime,一直執(zhí)行到setTimeout;
2、根據(jù)setTimeout(FrashTime,time),延遲time后,繼續(xù)執(zhí)行一次FrashTime,一直執(zhí)行到setTimeout;
3、根據(jù)setTimeout(FrashTime,time),延遲time后,繼續(xù)執(zhí)行一次FrashTime,一直執(zhí)行到setTimeout;
就這么循環(huán)下去了,如果將setTimeout寫在函數(shù)外面,就是只執(zhí)行一次的效果
2016-09-08
因?yàn)閟etTimeout在FrashTime函數(shù)里面調(diào)用了,相當(dāng)于在FrashTime內(nèi)部執(zhí)行,然后再去執(zhí)行setTimeout(FrashTime,time)(即延遲time后再次執(zhí)行setTimeout),然后繼續(xù)執(zhí)行FrashTime,就是一個(gè)循環(huán)了,這就叫遞歸調(diào)用