亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

javascript中SetInterval與setTimeout的定時器用法

2019-11-20 11:44:55
字體:
來源:轉載
供稿:網友

示例一:

查看演示 下載源碼

setTimeout() 方法用于在指定的毫秒數后調用函數或計算表達式,而setInterval()則是在每隔指定的毫秒數循環調用函數或表達式,直到clearInterval把它清除。也就是說setTimeout()只執行一次,setInterval()可以執行多次。兩個函數的參數也相同,第一個參數是要執行的code或句柄,第二個是延遲的毫秒數。

setTimeOut用法

setTimeout函數的用法如下:

var timeoutID = window.setTimeout(func, [delay, param1, param2, ...]); var timeoutID = window.setTimeout(code, [delay]); 

timeoutID:定時器ID號,它可以在clearTimeout()函數中被用來清除定時器。

func:被執行的函數。

code:(替代的語法)一個被執行的代碼串。

delay:延遲的時間,單位毫秒。如果沒有指定,默認為0。

我們可以使用window.setTimeout或setTimeout,兩個寫法基本一樣,只不過window.setTimeout將setTimeout函數作為全局window對象的一個屬性來引用。

應用示例:

function timeout(){  document.getElementById('res').innerHTML=Math.floor(Math.random()*100 + 1); } setTimeout("timeout()",5000); 

代碼執行時,5秒后調用timeout()函數。

setInterval用法

setInterval函數的參數及用法和setTimeout函數一樣,請參照上文的setTimeout函數的用法介紹。不同的是,setInterval每隔一定的時間執行當中的func或code代碼。

應用示例:

var tt = 10; function timego(){  tt--;  document.getElementById("tt").innerHTML = tt;  if(tt==0){   window.location.href='/';   return false;  } } var timer = window.setInterval("timego()",1000); 

函數timego()定義了頁面元素#tt顯示的內容,當tt等于0時,頁面定向到首頁。然后我們定義一個定時器timer,使用setInterval()每隔1秒調用一次timego()。這樣timego會執行10次,每次數字tt會減1,直到為0。那么如果想停止定時器,可以使用以下代碼:

window.clearInterval(timer); 

代碼執行時,10秒后頁面跳轉到首頁。

其實setTimeout()也可以實現每隔一段時間重復執行某個函數,但我們還是簡單的區別使用setTimeOut和setInterval。另外javascript都是以單線程的方式運行于瀏覽器的javascript引擎中,實際應用中復雜的任務中需要排隊執行,這就可能導致定時器時間不準,這個問題在大型應用中需要考慮,本文不做深究。

示例二:

JS里設定延時:

使用SetInterval和設定延時函數setTimeout 很類似。setTimeout 運用在延遲一段時間,再進行某項操作。

setTimeout("function",time) 設置一個超時對象 setInterval("function",time) 設置一個超時對象

SetInterval為自動重復,setTimeout不會重復。

clearTimeout(對象) 清除已設置的setTimeout對象 clearInterval(對象) 清除已設置的setInterval對象

使用定時器實現JavaScript的延期執行或重復執行 window對象提供了兩個方法來實現定時器的效果,分別是window.setTimeout()和window.setInterval。其中前者可以使一段代碼在指定時間后運行;而后者則可以使一段代碼每過指定時間就運行一次。

它們的原型如下: window.setTimeout(expression,milliseconds); window.setInterval(expression,milliseconds); 其中,expression可以是用引號括起來的一段代碼,也可以是一個函數名,到了指定的時間,系統便會自動調用該函數,當使用函數名作為調用句柄時,不能帶有任何參數;而使用字符串時,則可以在其中寫入要傳遞的參數。

兩個方法的第二個參數是milliseconds,表示延時或者重復執行的毫秒數。

下面分別介紹兩種方法。

1.window.setTimeout方法 該方法可以延時執行一個函數,例如:

<script language="JavaScript" type="text/javascript"><!-- function hello(){ alert("hello"); } window.setTimeout(hello,5000);//--> </script>

這段代碼將使得頁面打開5秒鐘后顯示對話框“hello”。其中最后一句也可以寫為: window.setTimeout("hello()",5000); 讀者可以體會它們的差別,在window.setInterval方法中也有這樣的性質。 如果在延時期限到達之前取消延執行,可以使用window.clearTimeout(timeoutId)方法,該方法接收一個id,表示一個定時器。這個id是由setTimeout方法返回的,例如:

<script language="JavaScript" type="text/javascript"><!--function hello(){  alert("hello");}var id=window.setTimeout(hello,5000);document.onclick=function(){  window.clearTimeout(id); }//--></script>

這樣,如果要取消顯示,只需單擊頁面任何一部分,就執行了window.clearTimeout方法,使得超時操作被取消。

2.window.setInterval方法 該方法使得一個函數每隔固定時間被調用一次,是一個很常用的方法。

如果想要取消定時執行,和clearTimeout方法類似,可以調用window.clearInterval方法。clearInterval方法同樣接收一個setInterval方法返回的值作為參數。例如: //定義一個反復執行的調用 var id=window.setInterval("somefunction",10000); //取消定時執行
window.clearInterval(id); 上面的代碼僅用于說明怎樣取消一個定時執行。實際上在很多場合都需要用到setInterval方法,下面將設計一個秒表,來介紹setInterval函數的用途:該秒表將包括兩個按鈕和一個用于顯示時間的文本框。當單擊開始按鈕時開始計時,最小單位為0.01秒,此時再次單擊按鈕則停止計時,文本框顯示經過的時間。另外一個按鈕用于將當前時間清零。其實現

代碼如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title> New Document </title> </head> <body> <form action="somepage.asp"> <input type="text" value="0" name="txt1"/> <input type="button" value="開始" name="btnStart"/> <input type="button" value="重置" name="btnReset"/> </form> </body> </html><script language="JavaScript" type="text/javascript"><!--//獲取表單中的表單域var txt=document.forms[0].elements["txt1"]; var btnStart=document.forms[0].elements["btnStart"]; var btnReset=document.forms[0].elements["btnReset"] //定義定時器的idvar id;//每10毫秒該值增加1var seed=0;btnStart.onclick=function(){  //根據按鈕文本來判斷當前操作   if(this.value=="開始"){     //使按鈕文本變為停止     this.value="停止";    //使重置按鈕不可用     btnReset.disabled=true;    //設置定時器,每0.01s跳一次    id=window.setInterval(tip,10);  }else{    //使按鈕文本變為開始    this.value="開始";    //使重置按鈕可用     btnReset.disabled=false;    //取消定時    window.clearInterval(id);   } }//重置按鈕btnReset.onclick=function(){  seed=0; }//讓秒表跳一格 function tip(){  seed++;   txt.value=seed/100;}//--></script>

給定時器調用傳遞參數 無論是window.setTimeout還是window.setInterval,在使用函數名作為調用句柄時都不能帶參數,而在許多場合必須要帶參數,這就需要想方法解決。例如對于函數hello(_name),它用于針對用戶名顯示歡迎信息: var userName="jack";

//根據用戶名顯示歡迎信息function hello(_name){   alert("hello,"+_name); }

這時,如果企圖使用以下語句來使hello函數延遲3秒執行是不可行的:

 window.setTimeout(hello(userName),3000);

這將使hello函數立即執行,并將返回值作為調用句柄傳遞給setTimeout函數,其結果并不是程序需要的。而使用字符串形式可以達到想要的結果:

window.setTimeout("hello(userName)",3000);

這里的字符串是一段JavaScript代碼,其中的userName表示的是變量。但這種寫法不夠直觀,而且有些場合必須使用函數名,下面用一個小技巧來實現帶參數函數的調用:

<script language="JavaScript" type="text/javascript"> <!-- var userName="jack";//根據用戶名顯示歡迎信息function hello(_name){  alert("hello,"+_name);}//創建一個函數,用于返回一個無參數函數function _hello(_name){  return function(){    hello(_name);  } }window.setTimeout(_hello(userName),3000); //--></script>

這里定義了一個函數_hello,用于接收一個參數,并返回一個不帶參數的函數,在這個函數內部使用了外部函數的參數,從而對其調用,不需要使用參數。在window.setTimeout函數中,使用_hello(userName)來返回一個不帶參數的函數句柄,從而實現了參數傳遞的功能。

window對象有兩個主要的定時方法,分別是setTimeout 和 setInteval 他們的語法基本上相同,但是完成的功能取有區別。

  setTimeout方法是定時程序,也就是在什么時間以后干什么。干完了就拉倒。

  setInterval方法則是表示間隔一定時間反復執行某操作。

  JS里設定延時:

使用SetInterval和設定延時函數setTimeout 很類似。setTimeout 運用在延遲一段時間,再進行某項操作。

setTimeout("function",time) 設置一個超時對象

setInterval("function",time) 設置一個超時對象

SetInterval為自動重復,setTimeout不會重復。

clearTimeout(對象) 清除已設置的setTimeout對象

clearInterval(對象) 清除已設置的setInterval對象

如果用setTimeout實現setInerval的功能,就需要在執行的程序中再定時調用自己才行。如果要清除計數器需要根據使用的方法不同,調用不同的清除方法:

例如:

tttt=setTimeout('northsnow()',1000);clearTimeout(tttt);

或者:

tttt=setInterval('northsnow()',1000);clearInteval(tttt);

舉一個例子:

<div id="liujincai"></div><input type="button" name="start" value="start" onclick='startShow();'><input type="button" name="stop" value="stop" onclick="stop();"><script language="javascript"> var intvalue=1; var timer2=null; function startShow() {   liujincai.innerHTML=liujincai.innerHTML + " " + (intvalue ++).toString();  timer2=window.setTimeout("startShow()",2000); } function stop() {   window.clearTimeout(timer2);  }</script>

或者:

<div id="liujincai"></div><input type="button" name="start" value="start" onclick='timer2=window.setInterval("startShow()",2000);//startShow();'><input type="button" name="stop" value="stop" onclick="stop();"><script language="javascript">  var intvalue=1; var timer2=null;  function startShow() {   liujincai.innerHTML=liujincai.innerHTML + " " + (intvalue ++).toString();  }  function stop() {   window.clearInterval(timer2); }</script>
 

雖然SetInterval與setTimeout都是用作定時器的,但它們的應用是有區別的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲黄色www网站| 啊v视频在线一区二区三区| 亚洲天堂第一页| 中文一区二区视频| 亚洲国产日韩欧美在线99| 亚洲免费人成在线视频观看| 日韩av电影免费观看高清| 国产亚洲精品91在线| 久久免费视频在线| 欧美精品免费在线| 欧美成年人视频网站| 一区二区av在线| 久久99久国产精品黄毛片入口| 亚洲天堂成人在线视频| 日韩成人高清在线| 欧美一级高清免费播放| 欧美日韩午夜视频在线观看| 日韩高清av在线| yw.139尤物在线精品视频| 中文字幕欧美视频在线| 国产精品爽黄69天堂a| 国产精品大陆在线观看| 久久久久免费精品国产| 国产精品久久久久久久午夜| 国产精品久久久久久久av电影| 91久久久久久久久久| 国产精品日韩精品| 日韩精品免费在线视频| 久久人人爽亚洲精品天堂| 亚洲精品美女久久久| 日韩欧美视频一区二区三区| 国产欧美日韩免费| 久久久午夜视频| 欧美视频第一页| 亚洲香蕉成人av网站在线观看| 91九色国产在线| 国产精品一区二区三区久久| 国产美女久久精品| 亚洲人成啪啪网站| 亚洲福利在线视频| 久久这里只有精品99| 亚洲精品国产精品国自产在线| 国产精品美女999| 日韩福利视频在线观看| 亲爱的老师9免费观看全集电视剧| 欧美午夜影院在线视频| 日韩av免费观影| 亚洲aaaaaa| 欧美日韩精品在线播放| 欧美在线视频观看免费网站| 久久99精品国产99久久6尤物| 亚洲成人激情视频| 欧美日本高清一区| 久久噜噜噜精品国产亚洲综合| 亚洲女成人图区| 成人欧美一区二区三区黑人孕妇| 欧美人成在线视频| 欧美高清电影在线看| 亚洲视频在线观看| 欧美日韩午夜视频在线观看| 亚洲精品久久久久国产| 中文字幕av日韩| 欧美性感美女h网站在线观看免费| 国产精品视频色| 亚洲性视频网站| 欧美激情亚洲综合一区| 日韩专区在线观看| 国产精品亚发布| 亚洲色图校园春色| 久久视频中文字幕| 日韩美女视频中文字幕| 国产一区二区三区在线播放免费观看| 欧美在线亚洲一区| 日韩精品在线视频| 日韩中文在线中文网在线观看| 美女精品视频一区| 81精品国产乱码久久久久久| 国产精品www色诱视频| 欧美激情免费观看| 91精品国产亚洲| 亚洲少妇中文在线| 日韩精品免费在线视频观看| 精品少妇一区二区30p| 欧美视频在线观看免费网址| 国产一区在线播放| 日韩在线观看高清| 国产精品久久久久久久久久久久久| 九九久久久久久久久激情| 中文字幕自拍vr一区二区三区| 日韩成人激情视频| 国产精品久久久久久久久久新婚| 日韩精品高清在线| 国内精久久久久久久久久人| 日韩欧美视频一区二区三区| 精品视频偷偷看在线观看| 国产成人一区二区三区| 欧美天天综合色影久久精品| 91精品在线观看视频| 久久精品国产视频| 日本高清久久天堂| 97久久精品人搡人人玩| 国产欧美精品在线播放| 亚洲国产高清福利视频| 欧美日韩亚洲天堂| 韩剧1988免费观看全集| 亚洲肉体裸体xxxx137| 国产精品av在线| 亚洲欧美在线第一页| 97视频在线观看免费高清完整版在线观看| 91国自产精品中文字幕亚洲| 久久国产精品免费视频| 国产精品久久久久久久天堂| 一区二区欧美久久| 日韩在线观看免费高清| 91国偷自产一区二区三区的观看方式| 精品国产户外野外| 视频在线一区二区| 国产成人精品一区二区在线| 国产精品pans私拍| 日本精品久久中文字幕佐佐木| 91亚洲国产成人精品性色| 亚洲自拍av在线| 久久视频精品在线| 亚洲国产精品女人久久久| 亚洲第一精品电影| 亚洲欧美另类在线观看| 欧美亚洲在线视频| 91国偷自产一区二区三区的观看方式| 欧美乱大交xxxxx另类电影| 欧美成人精品xxx| 亚洲人成在线观看| 欧美精品福利在线| 欧美裸体男粗大视频在线观看| 日韩免费在线电影| 国产精品一久久香蕉国产线看观看| 国外视频精品毛片| 成人精品一区二区三区电影免费| 欧美黑人狂野猛交老妇| 欧美激情欧美激情| 欧美日韩免费区域视频在线观看| 亚洲乱码国产乱码精品精天堂| 色偷偷噜噜噜亚洲男人的天堂| 亚洲欧美国产视频| 日韩成人激情在线| 亚洲精品视频在线播放| 国内精品国产三级国产在线专| 欧美天堂在线观看| 日本午夜精品理论片a级appf发布| 55夜色66夜色国产精品视频| 亚洲精品一区二区久| 久久亚洲综合国产精品99麻豆精品福利| 中文字幕视频一区二区在线有码| 亚洲色图欧美制服丝袜另类第一页| 亚洲人成网站777色婷婷| 一区二区三区美女xx视频| 疯狂做受xxxx欧美肥白少妇| 国产99久久精品一区二区永久免费| 韩日精品中文字幕| 色综合久久88色综合天天看泰| 欧美在线观看网址综合| 日本精品免费一区二区三区| 日韩在线视频免费观看| 国产精品永久免费在线| 日韩欧美精品在线观看|