要使定時器循環工作你需要寫一個函數實現循環調用。這里是一個例子:
var the_count = 0;
var the_timeout;
function doTimer()
{
window.document.timer_form.the_text.value = the_count;
the_count += 2;
the_timeout = setTimeout("doTimer();", 2000);
}
這里用到的定時器就是上一頁所用的定時器。當用戶點擊按鈕時就調用該函數。該函數將the_count的當前值寫到文字框中。然后the_count增加2,則開始調用函數自身。文字框中的數值也相應更新,the_count在增加2, 則再次調用函數自身。在等待的這兩秒期間瀏覽器則可以執行其他的同步工作。the_count一增加2就執行另一次setTimeout()。你不用擔心會造成內存崩潰,因為在給定時間內只有一個setTimeout()在執行。
而無限的"while" 循環則會鎖定瀏覽器的工作,在執行該循環的過程中瀏覽器不能同時執行別的任何指令。而setTimeout則可以使循環的間隙中讓瀏覽器執行別的工作。
如何取消setTimeout?
現在你已經學習了如何設置一個無限循環。但是你必須懂得如何終止循環。其指令就是clearTimeout。上例中定時器還有下面這個表單元素:
<input type="button" value="stop timer" onClick="clearTimeout(the_timeout);">
點擊這個按鈕就可以終止定時器。指令是clearTimeout(),其實很簡單,如果你這樣設置setTimeout,the_timeout = setTimeout("some javascript",3000);
你可以這樣取消定時器:clearTimeout(the_timeout);
很簡單,對吧?下面我們看一個復雜循環定時器,一個可以報告時間的定時器。
現在時間是:
點擊“啟動時鐘”則時鐘開始運行。它從你的計算機中讀取時間并每半秒更新一次文字框中的顯示。這個例子通過一個自調用的函數設置了一個定時器。同時這個例子可以讓你了解一點Date對象的功能。當講解cookies時,我提到過Date對象。
以下是代碼:
function writeTime() {
// 獲得日期對象
var today = new Date();
// 從對象中獲得信息
var hours = today.getHours();
var minutes = today.getMinutes();
var seconds = today.getSeconds();
新聞熱點
疑難解答