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

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

setTimeout() ,setInterval()他們有什么區別?

在十四行用setTimeout()調用和用setInterval()調用函數為什么會不一樣。setTimeout() ,setInterval()他們有什么區別?

正在回答

8 回答

我給你注釋一下JS代碼吧。

? var num=0; ? ? ? ? ? ? ?//定義變量num并賦值為0
? function startCount() { ? //定義函數startCount
??? document.getElementById('count').value=num; ? ?//獲取id為count并賦值為num
??? num=num+1; ? ? ? ?//這個就不用解釋了吧
? ? setTimeout("startCount()",1000); ?//setTimeout間隔1000毫秒去調用startCount函數

? }
?? setInterval("startCount()",1000); //setInterval間隔1000毫秒去調用startCount函數


其實你用setInterval方法的話,里面的setTimeout方法可以去掉的。因為setInterval方法會不斷的去調用startCount函數。


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

么么噠小七 提問者

好噠,你的注釋我明白了,非常感謝你。但按照我的代碼來說,它每一秒被執行兩次,本來應該每次加2的,為什么每次加的會遞增呢?為什么會出現0,2,5,9,14,20這樣增加呢?
2015-04-28 回復 有任何疑惑可以回復我~
#2

Perona 回復 么么噠小七 提問者

首先第一秒的是2,這個很好理解吧。第二秒的時候函數里面的code 自身再次調用 setTimeout(),也就是說函數里面是2+1,外面的setInterval()原本是2的,那么它調用函數里面的就是2+3=5。第三秒的時候函數里面的code 自身再次調用 setTimeout()就是3+1=4,外面的setInterval()再次調用函數就是5+4=9。以此類推~~~~反正你只要記住函數外面和里面的code都在不斷計算就可以啦。而且setInterval()遞增的量并不是1,而是startCount()這個函數。
2015-04-28 回復 有任何疑惑可以回復我~
#3

Perona 回復 么么噠小七 提問者

錯了,應該說setInterval()遞增的量除了1還有startCount()這個函數。
2015-04-28 回復 有任何疑惑可以回復我~
#4

簡單就會快樂

46546545645
2015-05-02 回復 有任何疑惑可以回復我~
查看1條回復

...

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

??????????????????????????

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

最佳答案設錯了,請不懂的同學看下面的解釋哈。


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

別人都回復了你那么多的東西,你都不把別人的回復設置為正確答案。

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

么么噠小七 提問者

我第一次提問,不懂規則,還望原諒。
2015-04-28 回復 有任何疑惑可以回復我~
#2

Perona 回復 么么噠小七 提問者

你們都萌萌噠~~~啦啦啦啦啦
2015-04-28 回復 有任何疑惑可以回復我~
#3

簡單就會快樂

4564564654
2015-05-02 回復 有任何疑惑可以回復我~
#4

簡單就會快樂

回復 簡單就23
2015-05-02 回復 有任何疑惑可以回復我~
#5

簡單就會快樂

回復 簡單就會123
2015-05-02 回復 有任何疑惑可以回復我~
#6

簡單就會快樂 回復 簡單就會快樂

456
2015-05-02 回復 有任何疑惑可以回復我~
查看3條回復

說錯了。以這個為準。第一秒函數里面計數1,外面函數計數除了本身計數1還調用函數,所以1+1=2。第二秒的時候函數里面的code 自身再次調用 setTimeout(),也就是說函數里面是1+1=2,外面的setInterval()原本是2的,自增量是1,調用函數2,即2+1+2=5。第三秒的時候函數里面的code 自身再次調用 setTimeout()就是2+1=3,外面的setInterval()原本的值加自增量1,再加調用函數就是5+1+3=9。以此類推~~~~反正你只要記住函數外面和里面的code都在不斷計算就可以啦。setInterval()遞增的量除了1還有startCount()這個函數。

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

么么噠小七 提問者

你解釋的太棒了,我懂了,哈哈。謝了。
2015-04-28 回復 有任何疑惑可以回復我~

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>計時器</title>
</head>
<script type="text/javascript">
? var num=0;
? function startCount() {
??? document.getElementById('count').value=num;
??? num=num+1;
????? setTimeout("startCount()",1000);
? }
?? setInterval("startCount()",1000);
</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>

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

setTimeout() 方法用于在指定的毫秒數后調用函數或計算表達式。

setTimeout() 只執行 code 一次。如果要多次調用,請使用 setInterval() 或者讓 code 自身再次調用 setTimeout()。setInterval() 方法可按照指定的周期(以毫秒計)來調用函數或計算表達式。

setInterval() 方法會不停地調用函數,直到 clearInterval() 被調用或窗口被關閉。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的參數。


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

么么噠小七 提問者

我明白了謝謝大神,但是您能為我解釋一下下面這個代碼運行的原因么?
2015-04-28 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

setTimeout() ,setInterval()他們有什么區別?

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

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

幫助反饋 APP下載

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

公眾號

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