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

首頁 > 編程 > JavaScript > 正文

JavaScript定時器詳解及實例

2019-11-20 22:28:37
字體:
來源:轉載
供稿:網友
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"]
//定義定時器的id
var id;
//每10毫秒該值增加1
var 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>

7.4.3 給定時器調用傳遞參數
無論是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>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美福利在线观看| 欧美日韩aaaa| 国内精品久久久久影院 日本资源| 国产精品视频成人| 日韩av免费在线看| 国产精品第一视频| 亚洲国产精品久久91精品| 欧美日韩国产一区二区| 8x拔播拔播x8国产精品| 久久久亚洲影院| 国产亚洲精品久久久久久| 亚洲xxxx18| 久久av在线看| 日本91av在线播放| 成人免费网站在线观看| 91免费在线视频网站| 亚洲v日韩v综合v精品v| 国产成人极品视频| 国产精品96久久久久久又黄又硬| 欧美色视频日本版| 成人在线中文字幕| 亚洲v日韩v综合v精品v| 欧美电影免费观看高清完整| 伊人一区二区三区久久精品| 精品久久久中文| 人人爽久久涩噜噜噜网站| 久久久av亚洲男天堂| 日韩av手机在线观看| 亚洲欧美日韩精品久久奇米色影视| 97视频在线观看播放| 亚洲一品av免费观看| 亚洲最大福利网| 一本色道久久综合狠狠躁篇怎么玩| 精品国产31久久久久久| 日韩中文字幕国产精品| 国产精品中文久久久久久久| 麻豆国产精品va在线观看不卡| 国产欧美亚洲视频| 亚洲成av人影院在线观看| 日本一区二三区好的精华液| 91久久精品国产91性色| 国产精品夫妻激情| 欧美国产高跟鞋裸体秀xxxhd| 久久久久久成人精品| 亚洲第一免费网站| 成人免费视频a| 欧美日韩美女在线观看| 美女av一区二区| 国产精品美女久久| 色午夜这里只有精品| 国产91色在线播放| 国产精品久久久久久亚洲影视| 亚洲女人被黑人巨大进入al| 福利视频第一区| 日韩成人中文字幕在线观看| 日韩在线免费观看视频| 美女久久久久久久久久久| 国模吧一区二区三区| 亚洲精品久久7777777| 日韩精品电影网| 欧美日韩国产综合视频在线观看中文| 日韩第一页在线| 久久久亚洲精品视频| 97视频免费在线看| 亚洲人成电影在线播放| 久久视频中文字幕| 国产美女直播视频一区| 91丝袜美腿美女视频网站| 91精品成人久久| 尤物精品国产第一福利三区| 欧美乱人伦中文字幕在线| 亚洲欧美另类人妖| 国产精品亚洲精品| 在线播放日韩专区| 最新亚洲国产精品| 亚洲综合大片69999| 欧美大尺度激情区在线播放| 国产亚洲视频在线观看| 91伊人影院在线播放| 日韩一区二区三区在线播放| 亚洲精品在线观看www| 亚洲精品国精品久久99热| 久久九九精品99国产精品| 国产精品午夜国产小视频| 国产成人a亚洲精品| 精品小视频在线| 欧美极品美女视频网站在线观看免费| 性色av一区二区三区| 亚洲欧美999| 国产精品亚洲一区二区三区| 91网站免费观看| 久久伊人精品一区二区三区| 国产精品视频一区二区三区四| 68精品国产免费久久久久久婷婷| 国产精品91久久久久久| 国外日韩电影在线观看| 国产成人精品免高潮费视频| 欧洲成人在线视频| 久久精品国亚洲| 国产欧美日韩丝袜精品一区| 一二美女精品欧洲| 亚洲午夜久久久久久久| 国产精品日韩电影| 久久精品视频99| 国产亚洲a∨片在线观看| 在线亚洲国产精品网| 欧洲成人性视频| 一本一道久久a久久精品逆3p| 欧美一级大胆视频| 国产成人精品免高潮在线观看| 欧洲成人在线视频| 国产欧美va欧美va香蕉在| 国产999精品视频| 日韩在线播放一区| 中文字幕亚洲二区| 国产一区二区日韩精品欧美精品| 久久久国产视频91| 欧美成在线观看| 久久精品小视频| 神马国产精品影院av| 91免费人成网站在线观看18| 国产suv精品一区二区| 亚洲精品久久久久久久久久久久| 91sao在线观看国产| 韩曰欧美视频免费观看| 久久久久久久网站| 日韩精品在线视频| 最近中文字幕2019免费| 亚洲天堂免费视频| 98精品国产高清在线xxxx天堂| 亚洲综合在线做性| 亚洲xxx自由成熟| 一区二区三区无码高清视频| 欧美专区在线播放| 色偷偷偷综合中文字幕;dd| 亚洲免费中文字幕| 欧美高清激情视频| 久久久国产精品视频| 亚洲精品国产综合区久久久久久久| 九九九久久久久久| 国产亚洲免费的视频看| 亚洲欧美国产制服动漫| 久久视频国产精品免费视频在线| 日韩网站免费观看| 黑人极品videos精品欧美裸| 久久夜精品va视频免费观看| 久久久精品日本| 欧美有码在线观看视频| 欧美一级大片在线免费观看| 久久精品久久久久久国产 免费| 国产成人在线精品| 国产亚洲一区精品| 国产精品福利小视频| 欧美在线影院在线视频| 国产一区二区丝袜高跟鞋图片| 精品国内自产拍在线观看| zzijzzij亚洲日本成熟少妇| 国产在线精品成人一区二区三区| 欧美激情免费在线| 亚洲色图av在线| 久久999免费视频| 欧美网站在线观看| 欧洲日本亚洲国产区| 搡老女人一区二区三区视频tv|