課程
/前端開發
/JavaScript
/JavaScript進階篇
當連續點擊開始開始按鈕2次以上。停止按鈕就失去作用了
2016-06-14
源自:JavaScript進階篇 8-4
正在回答
????function?mm(){ ????????clearInterval(i); ???i=setInterval("clock()",100);? ???}
可以通過在開始事件開頭設置關閉,保證每次點擊開始,前一次定時器就已經關閉
慕客學渣會總瓢把子3201537 提問者
狼吻小紅帽 回復 慕客學渣會總瓢把子3201537 提問者
慕客學渣會總瓢把子3201537 提問者 回復 狼吻小紅帽
停不下來了
因為你的mm()函數實際上是添加一個循環計時器,你運行第一次添加一個,運行第一次添加第二個,而clear清除只能清除一個,再此添加一個之后又可以清除一個了。
也就是代碼刷新之前,clearInterval和clearTimeout只能用一次;而添加setInterval和setTimeout確可以無數次添加。
<!DOCTYPE?HTML> <html> <head> <meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"> <title>計時器</title> <script?type="text/javascript"> var?times=0; ???function?clock(){ ????//??var?time=new?Date();??????????????? ?? ??????document.getElementById("clock").value?=?times; ??times++; ???} ????var?i?=?setInterval(clock,1000); function?stop(){ i?=?setInterval(clock,1000); } </script> </head> <body> ??<form> ????<input?type="text"?id="clock"?size="50"??/> ????<input?type="button"?value="Stop"?onclick="clearInterval(i)"?/> ?????<input?type="button"?value="Start"??onclick="stop()"??/> ??</form> </body> </html>
你試一下上面的代碼,初始運行時每秒+1,點擊Stop停止計數。
你再點擊一下Start,運行為每秒+1;第二次點擊變成每秒+1+1;第三次點擊變成每秒+1+1+1。
最后點擊Stop,變成每秒+1+1;第二次點擊還是每秒+1+1。
我們知道定時器會返回一個值就是他的id,用于停止定時器。當你開始按鈕連點兩下時,獲取到的id就是第二次點擊開始的id,而第一次開始的id就無法獲取,從而停止按鈕只能停止第二次的時間,而第一次點擊的開始時間會一直執行下去
舉報
本課程從如何插入JS代碼開始,帶您進入網頁動態交互世界
1 回答代碼問題求指教,一大堆bug
1 回答請指教指教
1 回答有一個小BUG
1 回答請大神指教一下!
3 回答請大神指教一下!
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-06-14
可以通過在開始事件開頭設置關閉,保證每次點擊開始,前一次定時器就已經關閉
2016-06-14
停不下來了
2016-06-14
因為你的mm()函數實際上是添加一個循環計時器,你運行第一次添加一個,運行第一次添加第二個,而clear清除只能清除一個,再此添加一個之后又可以清除一個了。
也就是代碼刷新之前,clearInterval和clearTimeout只能用一次;而添加setInterval和setTimeout確可以無數次添加。
你試一下上面的代碼,初始運行時每秒+1,點擊Stop停止計數。
你再點擊一下Start,運行為每秒+1;第二次點擊變成每秒+1+1;第三次點擊變成每秒+1+1+1。
最后點擊Stop,變成每秒+1+1;第二次點擊還是每秒+1+1。
2016-06-14
我們知道定時器會返回一個值就是他的id,用于停止定時器。當你開始按鈕連點兩下時,獲取到的id就是第二次點擊開始的id,而第一次開始的id就無法獲取,從而停止按鈕只能停止第二次的時間,而第一次點擊的開始時間會一直執行下去