真有意思,誰(shuí)能告訴我這是為什么?
<!DOCTYPE?HTML> <html> <head> <meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"> <title>計(jì)時(shí)器</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開(kāi)始計(jì)數(shù),stop停止計(jì)數(shù)并歸零。
點(diǎn)擊1次start正常顯示,并且stop只需要點(diǎn)擊1次就OK。
點(diǎn)擊n(n>1)次start時(shí),計(jì)數(shù)器以n倍速度計(jì)數(shù),并且每點(diǎn)擊1次stop,計(jì)數(shù)倍速減一,直至歸零。
上一小節(jié)就發(fā)現(xiàn)了這個(gè)問(wèn)題,請(qǐng)問(wèn)這是為什么?
我猜一下:是因?yàn)槊奎c(diǎn)擊一次start就生成了一個(gè)計(jì)數(shù)函數(shù),并且這些計(jì)數(shù)函數(shù)共用同一個(gè)全局變量num,然后每點(diǎn)擊1次stop就clear一個(gè)?是這樣嗎?~~
2015-04-02
不完全是n倍速,與你的點(diǎn)擊時(shí)機(jī)有關(guān)。
由于你的num是全局變量,所有計(jì)時(shí)器都對(duì)同一個(gè)num進(jìn)行操作,所以越多計(jì)時(shí)器,num增加越快,而且計(jì)時(shí)器之間開(kāi)始時(shí)間如果都是整秒的話,就能形成n倍速的效果。