計(jì)時(shí)函數(shù)是使我們能夠在特定時(shí)間執(zhí)行功能的函數(shù)。
使用計(jì)時(shí)函數(shù),您可以延遲代碼的執(zhí)行,以免在觸發(fā)事件的確切時(shí)刻完成代碼。
JavaScript中有兩個(gè)計(jì)時(shí)函數(shù):
setTimeout(function, milliseconds) -等待指定的毫秒數(shù)后執(zhí)行函數(shù)(function)
setInterval(function, milliseconds) -與setTimeout()相同,但是連續(xù)重復(fù)執(zhí)行該函數(shù)(function)
這兩個(gè)setTimeout()和setInterval()是方法窗口對(duì)象,可以在不窗口前綴被寫(xiě)入。
setTimeout()方法用于在一段時(shí)間后僅執(zhí)行一次函數(shù)或指定的代碼段。
語(yǔ)法:
window.setTimeout(function, milliseconds)
第一個(gè)參數(shù)是要執(zhí)行的函數(shù)。
第二個(gè)參數(shù)指示執(zhí)行前的毫秒數(shù)(1秒= 1000毫秒)。
以下示例在單擊按鈕2秒鐘后將顯示警報(bào)消息:
<button onclick="setTimeout(myFunc, 2000)">Click</button>
<script>
function myFunc() {
alert("Hello World");
}
</script>測(cè)試看看?/?clearTimeout()方法停止執(zhí)行setTimeout()中指定的函數(shù)。
語(yǔ)法:
window.clearTimeout(var)
clearTimeout()方法使用從setTimeout()返回的變量。
t = setTimeout(); clearTimeout(t);
如果尚未執(zhí)行該函數(shù),則可以通過(guò)調(diào)用clearTimeout()方法來(lái)停止執(zhí)行。
與上述示例相同,但添加了“停止”按鈕:
<button onclick="myFunc()">Click</button>
<button onclick="myStopFunc()">Stop the alert</button>
<script>
var t;
function myFunc() {
t = setTimeout(function(){ alert("Hello world"); }, 2000);
}
function myStopFunc() {
clearTimeout(t);
}
</script>測(cè)試看看?/?setInterval()方法重復(fù)調(diào)用一個(gè)函數(shù),每次調(diào)用之間有固定的時(shí)間延遲。
語(yǔ)法:
window.setInterval(function, milliseconds)
第一個(gè)參數(shù)是要執(zhí)行的函數(shù)。
第二個(gè)參數(shù)指示每次執(zhí)行之間的時(shí)間間隔的長(zhǎng)度。
本示例每秒執(zhí)行一次稱為“ startTimer”的功能(如數(shù)字手表):
//每1秒執(zhí)行一次startTimer()
setInterval(startTimer, 1000);
function startTimer() {
var date = new Date();
document.getElementById("result").innerHTML = date.toLocaleTimeString();
}測(cè)試看看?/?clearInterval()方法停止執(zhí)行setInterval()中指定的函數(shù)。
語(yǔ)法:
window.clearInterval(var)
clearInterval()方法使用從setInterval()返回的變量。
t = setInterval(); clearInterval(t);
與上述示例相同,但添加了“停止”按鈕:
//每1秒執(zhí)行一次startTimer()
var t = setInterval(startTimer, 1000);
function startTimer() {
var date = new Date();
document.getElementById("result").innerHTML = date.toLocaleTimeString();
}
//取消使用setInterval()創(chuàng)建的重復(fù)動(dòng)作
function stopTimer() {
clearInterval(t);
}測(cè)試看看?/?單擊下面的“開(kāi)始計(jì)數(shù)”按鈕以啟動(dòng)計(jì)時(shí)器。單擊“停止計(jì)數(shù)”按鈕停止計(jì)數(shù):
單擊下面的“啟動(dòng)進(jìn)度”按鈕以啟動(dòng)進(jìn)度欄。單擊“停止進(jìn)度”按鈕以停止進(jìn)度欄: