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

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

真有意思,誰能告訴我這是為什么?

<!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;
??var?i;
??function?startCount(){
????document.getElementById('count').value=num;
????num=num+1;
????i=setTimeout("startCount()",1000);
??}
??function?stopCount(){
??clearTimeout(i);
??i=0;num=0;
??document.getElementById('count').value=0;
??}
</script>
</head>
<body>
??<form>
????<input?type="text"?id="count"?/>
????<input?type="button"?value="Start"?onclick="startCount()"?/>
????<input?type="button"?value="Stop"?onclick="stopCount()"??/>
??</form>
</body>
</html>

代碼如上,start開始計數,stop停止計數并歸零。

點擊1次start正常顯示,并且stop只需要點擊1次就OK。

點擊n(n>1)次start時,計數器以n倍速度計數,并且每點擊1次stop,計數倍速減一,直至歸零。

上一小節就發現了這個問題,請問這是為什么?

我猜一下:是因為每點擊一次start就生成了一個計數函數,并且這些計數函數共用同一個全局變量num,然后每點擊1次stop就clear一個?是這樣嗎?~~

正在回答

1 回答

不完全是n倍速,與你的點擊時機有關。

由于你的num是全局變量,所有計時器都對同一個num進行操作,所以越多計時器,num增加越快,而且計時器之間開始時間如果都是整秒的話,就能形成n倍速的效果。

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

Groune 提問者

確實與點擊時機有關。請問如何實現只有第一次點擊才開始計數的效果?
2015-04-02 回復 有任何疑惑可以回復我~
#2

用戶已禁用 回復 Groune 提問者

使用setInterval吧,少年。 setInterval(function(){ num++; }, 1000)
2015-04-02 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

真有意思,誰能告訴我這是為什么?

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

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

幫助反饋 APP下載

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

公眾號

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