1、JavaScript計時器,我們可以在設定的時間間隔之后來執行代碼,而不是在函數被調用后立即執行。
計時器類型:
1)一次性計時器:僅在指定的延遲時間之后觸發一次。
2)間隔性觸發計時器:每隔一定的時間間隔就觸發一次。
計時器方法:
1)setInterval() :在執行時,從載入頁面后每隔指定的時間執行代碼。

//語法setInterval(代碼,交互時間);//參數說明:1. 代碼:要調用的函數或要執行的代碼串。2. 交互時間:周期性執行或調用表達式之間的時間間隔,以毫秒計(1s=1000ms)。//返回值:一個可以傳遞給 clearInterval() 從而取消對"代碼"的周期性執行的值。//調用函數格式:(假設有一個clock()函數):setInterval("clock()",1000)//或setInterval(clock,1000)//例子<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>計時器</title><script type="text/javascript"> var int=setInterval(clock, 1000)//調用計時器 function clock(){ var time=new Date(); document.getElementById("clock").value = time; }</script></head><body> <form> <input type="text" id="clock" size="50" /> </form></body></html>2)取消計時器clearInterval():clearInterval() 方法可取消由 setInterval() 設置的交互時間。
//語法clearInterval(id_of_setInterval)//參數說明:id_of_setInterval:由 setInterval() 返回的 ID 值。//例子<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>計時器</title><script type="text/javascript"> function clock(){ var time=new Date(); document.getElementById("clock").value = time; }// 每隔100毫秒調用clock函數,并將返回值賦值給i var i=setInterval("clock()",100);</script></head><body> <form> <input type="text" id="clock" size="50" /> <input type="button" value="Stop" onclick="clearInterval(i)" /> </form></body></html>//每隔 100 毫秒調用 clock() 函數,并顯示時間。當點擊按鈕時,停止時間3) setTimeout()計時器,在載入后延遲指定時間后,去執行一次表達式,僅執行一次。
//語法setTimeout(代碼,延遲時間);//參數說明:1. 要調用的函數或要執行的代碼串。2. 延時時間:在執行代碼前需等待的時間,以毫秒為單位(1s=1000ms)。//例子1//打開網頁3秒后,在彈出一個提示框<!DOCTYPE HTML><html><head><script type="text/javascript"> setTimeout("alert('Hello!')", 3000 );</script></head><body></body></html>//例子2//當按鈕start被點擊時,setTimeout()調用函數,在5秒后彈出一個提示框<!DOCTYPE HTML><html><head><script type="text/javascript">function tinfo(){ var t=setTimeout("alert('Hello!')",5000); }</script></head><body><form> <input type="button" value="start" onClick="tinfo()"></form></body></html>//例子3//創建一個運行于無窮循環中的計數器,需要編寫一個函數來調用其自身。在下面的代碼,當按鈕被點擊后,輸入域便從0開始計數<!DOCTYPE HTML><html><head><script type="text/javascript">var num=0;function numCount(){ document.getElementById('txt').value=num; num=num+1; setTimeout("numCount()",1000); }</script></head><body><form><input type="text" id="txt" /><input type="button" value="Start" onClick="numCount()" /></form></body></html>4) 取消計時器clearTimeout(), setTimeout()和clearTimeout()一起使用,停止計時器。
//語法clearTimeout(id_of_setTimeout)//參數說明:id_of_setTimeout:由 setTimeout() 返回的 ID 值。該值標識要取消的延遲執行代碼塊。//例子:添加了一個 "Stop" 按鈕來停止這個計數器<!DOCTYPE HTML><html><head><script type="text/javascript"> var num=0,i; function timedCount(){ document.getElementById('txt').value=num; num=num+1; i=setTimeout(timedCount,1000); } setTimeout(timedCount,1000); function stopCount(){ clearTimeout(i); }</script></head><body> <form> <input type="text" id="txt"> <input type="button" value="Stop" onClick="stopCount()">//停止按鈕 </form></body></html>setinterval與settimeout區別:
1)因為setTimeout(表達式,延時時間)在執行時,是在載入后延遲指定時間后,去執行一次表達式,記住,次數是一次;而setInterval(表達式,交互時間)則不一樣,它從載入后,每隔指定的時間就執行一次表達式 所以,完全是不一樣的
2)很多人習慣于將setTimeout包含于被執行函數中,然后在函數外再次使用setTimeout來達到定時執行的目的;這樣,函數外的setTimeout在執行函數時再次觸發setTimeout從而形成周而復始的定時效果。
3)使用的時候各有各的優勢,使用setInterval,需要手動的停止tick觸發。而使用方法中嵌套setTimeout,可以根據方法內部本身的邏輯不再調用setTimeout就等于停止了觸發。
//setTimeout例子showTime();function showTime(){ var day = new Date(); alert("時間是: " + day.toString()); setTimeout("showTime()", 1000);}//setInterval例子setInterval("showTime()", 1000);function showTime(){ var day = new Date(); alert("時間是: " + day.toString());}這兩種方法可能看起來非常像,而且顯示的結果也會很相似,不過兩者的最大區別就是,setTimeout方法不會每隔1秒鐘就執行一次showTime函數,它是在每次調用setTimeout后過1秒鐘再去執行showTime函數。這意味著如果showTime函數的主體部分需要2秒鐘執行完,那么整個函數則要每3秒鐘才執行一次。而setInterval卻沒有被自己所調用的函數所束縛,它只是簡單地每隔一定時間就重復執行一次那個函數。
如果要求在每隔一個固定的時間間隔后就精確地執行某動作,那么最好使用setInterval,而如果不想由于連續調用產生互相干擾的問題,尤其是每次函數的調用需要繁重的計算以及很長的處理時間,那么最好使用setTimeout。
如果對計時函數不加以處理,那么setInterval將會持續執行相同的代碼,一直到瀏覽器窗口關閉,或者用戶轉到了另外一個頁面為止。不過還是有辦法可以終止setTimeout和setInterval函數的執行。
以上就是小編為大家帶來的淺談JavaScript的計時器對象全部內容了,希望大家多多支持武林網~
新聞熱點
疑難解答