亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

這個的邏輯有點無法理解的呀。。

想通了耶。。。


<script type="text/javascript">

? var num=0;

? function startCount() {

? ? document.getElementById('count').value=num;

? ? num=num+1;

? ? setTimeout("startCount()",2000);?

? }

? ? setTimeout("startCount()",1000);?

</script>


函數?startCount()內外都設置?setTimeout()該怎么理解呢? ?為什么只在函數startCount()中設置? setTimeout("startCount()",1000)沒有效果呢?


正在回答

2 回答

function外的setTimeout()不是必須的,只不過這樣寫時不需要點擊文本框計數器就會從頁面開始載入時自動運行了。

3 回復 有任何疑惑可以回復我~
#1

Beckybei

function內的setTimeout() 在完成這個函數里就是必須的 可以這樣子理解嗎?
2015-04-23 回復 有任何疑惑可以回復我~
#2

Groune 回復 Beckybei

這個是我理解錯了,回頭來看看還是血舞殘殤大大的解釋才是正確的。 只寫function startCount() { document.getElementById('count').value=num; num=num+1; setTimeout("startCount()",1000); }只是相當于定義了一個名字叫startCount的函數,但是沒有調用。而在function外寫startCount()才進行了第一次調用,第一次調用后由于這個計數函數內部又自己調用自己,所以就開始循環計數了。
2015-04-23 回復 有任何疑惑可以回復我~
#3

Groune 回復 Beckybei

我原來為什么會理解錯呢,是因為在計數器開始顯示數字后直接把function外的startCount刪掉了,但是不知道由于什么原因(我猜是因為這個函數還在內存中)計數器依舊被調用了,給我一個錯誤的理解。 其實你可以重新打開頁面或者刷新一下試試,先不寫外面的startCount看看會發生什么,然后再把外面的startCount寫上,延遲時間可以長一些(如10秒),這樣能比較直觀的理解。
2015-04-23 回復 有任何疑惑可以回復我~
#4

Beckybei 回復 Groune

謝謝!
2015-04-23 回復 有任何疑惑可以回復我~
查看1條回復

setTimeout("startCount()",1000); 這句話是1秒之后調用1次startCount這個函數,是先把函數調用起來

然后setTimeout("startCount()",2000); 這句話是隔2秒之后再調用該函數,這樣就可以做到循環調用了,類似于遞歸

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

這個的邏輯有點無法理解的呀。。

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號