JS定時器所謂的“暫停”和“重啟”

jopen 9年前發布 | 31K 次閱讀 JavaScript開發

function gd()     //還是前面的問題,函數不要寫在定時器里面,否則無法再定時器外面調用此函數

 {

  if(aUl.offsetLeft < -aUl.offsetWidth/2)

  {

   aUl.style.left='0';

  }

  if(aUl.offsetLeft >0)

  {

   aUl.style.left=-aUl.offsetWidth/2+'px';

  }

  

   aUl.style.left=aUl.offsetLeft+speed+'px';

  

 }

 var dsq = setInterval(gd,40);    //給定時器取個名字是給下面的“暫停”、“重啟”打基礎

 oDiv.onmouseover= function()    //停止定時器實現暫停的效果

 {

  clearInterval(dsq);    //給定時器起名字這里才能停止那個定時器,否則的話你停止誰呢。(我說的廢話,都會用定時器了還不知道這事^_^)

 }

 oDiv.onmouseout= function()      //開啟定時器,實現重啟的效果

 {    //setInterval(gd,40);  錯誤的示范   dsq=setInterval(gd,40);     //重點在這里,我們需要再開啟這個定時器,一定要在定時器前面加上你定義的那個定時器的變量名,如果不加的話就會又開啟一個新的定時器然后你上面的那個停止dsq定時器的函數是無法停止這個新的定時器的,當你鼠標不斷移入移出都會開啟一個新的定時器,多個定時器同時執行相同的動作,這樣相當于你的定時器里面的時間成倍的減少,效果就是你的定時器越來越快的執行,你可以試一下看是什么效果,不要試多了,小心電腦死機。

 }</pre>

來自: http://my.oschina.net/u/2602502/blog/603498

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!