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