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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

javascript定時函數問題

javascript定時函數問題

fenkapian 2016-07-04 20:18:37
如下代碼,為什么點擊開始按鈕,然后點更改時間間隔按鈕,這時再點停止按鈕時就失效了。點開始后再點停止,就能正常停止。 <!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html?xmlns="http://www.w3.org/1999/xhtml"?xml:lang="en"> <head> <meta?http-equiv="Content-Type"?content="text/html;charset=UTF-8"> <title>定時函數</title> <script?type="text/javascript"> var?n?=?0; var?timer; function?t()?{ document.getElementById('b').innerHTML?=?'數字:'?+?(++n); } function?kaiShi()?{ timer?=?setInterval("t()",1000); } ???function?quit()?{ ????var?tui?=?clearInterval(timer); ???} ???function?gai()?{ timer?=?setInterval("t()",500); ???} </script> </head> <body> <label?id='b'></label> <input?type="button"?name=""?value="start"?onclick="kaiShi()"> <input?type="button"?name=""?value="停止"?onclick="quit()"> <input?type="button"?name=""?value='更改時間間隔為0.5秒'?onclick="gai()"> </body> </html>
查看完整描述

2 回答

已采納
?
super_mb

TA貢獻101條經驗 獲得超107個贊

定時器設置之后要清除,需要利用它返回的ID值,調用clearInterval()這個函數才可以清除定時器。在你的代碼里,開始時timer存的是1000毫秒的定時器的ID,而當你更改為500毫秒的定時器時,timer存的是500毫秒定時器的ID值,這時候你沒有辦法再獲取1000毫秒的定時器的ID值,清除的只有500毫秒的定時器。如果要達到想要的效果,可以將函數gai()改成這樣:

function?gai()?{
????clearInterval(timer);?//此時timer的值還是1000毫秒定時器的ID值,先把它清除了
????timer?=?setInterval("t()",500);??//再開啟新的定時器,此時timer的值是500毫秒的定時器
}


查看完整回答
7 反對 回復 2016-07-04
?
woshiajuana

TA貢獻211條經驗 獲得超152個贊

很簡單,你點擊了時間開始按鈕timer = setInterval("t()",1000);開始跳動

然后你沒有清除這個開始按鈕創建的timer變量所指示的setInterval("t()",1000);定時器,就點擊那個更改時間間隔按鈕,又一次創建setInterval("t()",1000);定時器,并且把timer變量改成了第二次創建的,你的這種賦值法并不能清除掉你第一次點擊開始創建的setInterval("t()",1000)定時器

所以當你點擊停止的時候,那個第二次賦值給timer變量的定時器被清除掉了,但第一次的那個卻沒有清除

理解了的話,還請采納

查看完整回答
2 反對 回復 2016-07-04
  • fenkapian
    fenkapian
    非常感謝您的解答, 可惜只能采納一個
  • 2 回答
  • 1 關注
  • 2635 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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