深入理解setTimeout函數(shù)和setInterval函數(shù)
前幾天學(xué)了js,看到了兩個非常有趣的函數(shù),他們分別是setTimeout函數(shù)和setInterval函數(shù),這兩個函數(shù)能使網(wǎng)頁呈現(xiàn)非常一些網(wǎng)頁中比較常見的效果,比如說圖片輪播,等一些非常好玩的效果。下面就來一起來了解這兩個函數(shù)吧!
一setTimeout函數(shù)和setInterval函數(shù)的語法以及應(yīng)用
1.setTimeout函數(shù)
定義和用法:setTimeout()方法用于在指定的毫秒數(shù)后調(diào)用函數(shù)或計算表達式?! ?/p>
語法:setTimeout(code,millisec);
參數(shù):
code (必需):要調(diào)用的函數(shù)后要執(zhí)行的 JavaScript 代碼串。
millisec(必需):在執(zhí)行代碼前需等待的毫秒數(shù)?! ?/p>
提示:
setTimeout() 只執(zhí)行 code 一次。如果要多次調(diào)用,請使用 setInterval() 或者讓 code 自身再次調(diào)用 setTimeout()。
返回值
一個可以傳遞給 Window.clearTimeout() 從而取消對 code 的周期性執(zhí)行的值。
既然setTimeout是一個定時器函數(shù),那么就有一個一個函數(shù)來清理定時器,那我們就用到了clearTimeout函數(shù)。
clearTimeout(setTimeout()返回的ID值);
2.setInterval定義
setInterval() 方法可按照指定的周期(以毫秒計)來調(diào)用函數(shù)或計算表達式。
setInterval() 方法會不停地調(diào)用函數(shù),直到 clearInterval() 被調(diào)用或窗口被關(guān)閉。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的參數(shù)。
語法
setInterval(code,millisec[,"lang"]);
參數(shù)code必需。要調(diào)用的函數(shù)或要執(zhí)行的代碼串。
millisec必須。周期性執(zhí)行或調(diào)用 code 之間的時間間隔,以毫秒計
返回值
一個可以傳遞給 Window.clearInterval() 從而取消對 code 的周期性執(zhí)行的值。
既然setTimeout是一個定時器函數(shù),那么就有一個一個函數(shù)來清理定時器,那我們就用到了clearInterval()函數(shù)。
clearInterval()(setInterval()返回的ID值);
二.案例:
倒計時效果
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>倒計時效果</title> <script type="text/ecmascript"> //使用js方式實現(xiàn)倒計時效果 var t1; window.onload = function () { //01定位到開始按鈕返回一個dom對象 var btns = document.getElementById('btnStart'); //02.給開始按鈕注冊單擊事件 btns.onclick = function () { //執(zhí)行ssetInerval函數(shù)第一個參數(shù)要定時執(zhí)行的函數(shù),第二個參數(shù)該函數(shù)每個多少毫秒執(zhí)行一次 t1= setInterval(start, 1000); } //03定位到停止按鈕返回一個dom對象 var btnst = document.getElementById('btnStop'); btnst.onclick = function () { clearInterval(t1); } } //要隔1秒執(zhí)行的函數(shù) function start() { //01.獲取div中的文本賦值給一個變量 var divdom = document.getElementById('msg'); var divnum = divdom.innerText; //判斷divnum的值是否為0 if (divnum > 0) { divnum--; //把減過的值重新賦值給divnum divdom.innerText = divnum; } } </script> </head> <body> <input type="button" id="btnStart" value="開始" /> <input type="button" id="btnStop" value="停止" /><br /> <div id="msg">10</div> </body> </html>
背景圖片切換:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script type="text/javascript"> var count = 1;//定義初始變量默認為第一張圖片 window.onload = function () { //使用定時器函數(shù)每隔一秒定義執(zhí)行一次show函數(shù) setInterval(show,1000); } //要執(zhí)行的函數(shù) function show() { //如果圖片到達最后一張(5張),就將下一張顯示的圖片改為第一張,如果沒有到達最后一張就將顯示下一張圖片 if (count > 5) { count = 1; } else { count++; } //獲取id為myimg的dom對象 var dom = document.getElementById("myimg"); //改變img標簽的src屬性指向,改變圖片 dom.src = "image/"+count+".jpg" } </script> </head> <body> <img src="image/1.jpg" alt="Alternate Text" width="200px" height="200px" id="myimg" /> </body> </html>
點名器
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script type="text/javascript"> //定義一個數(shù)組保存該點名器中的基本數(shù)據(jù) var data = ['張三', '李四', '王二', '小陳', '小張']; var i = 0;//聲明一個初始變量默認讓第一個人顯示在頁面上 var t1; window.onload = function () { //02.獲取開始點名按鈕的dom對象給該對象注冊單擊事件 var dom = document.getElementById("mybtn"); dom.onclick = function () { //使用setInterval函數(shù)隔500毫秒調(diào)用一次result函數(shù) t1 = setInterval(start, 500); //該方法隔6秒他只調(diào)用一次 setTimeout(stop,6000); } //定義一個匿名函數(shù)把他賦值給一個變量result var start= function() { //03獲取h1標簽對象,給h1標簽的文本賦值 var domh = document.getElementById("myh1"); domh.innerText = data[i % data.length];//替換已存在,元素值 i++; } //調(diào)用匿名函數(shù) start(); var stop = function () { //清除定時器 clearInterval(t1); //彈出提示框點到的同學(xué)請作答 alert("請" + document.getElementById("myh1").innerText+"同學(xué)作答"); } } </script> </head> <body> <h1 id="myh1"></h1> <button id="mybtn"> 開始點名</button> </body> </html>
通過上面的幾個案例,我相信大家一點對這兩個函數(shù)應(yīng)該不陌生了。
以上這篇深入理解setTimeout函數(shù)和setInterval函數(shù)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- setTimeout函數(shù)兼容各主流瀏覽器運行執(zhí)行效果實例
- 解決火狐瀏覽器下JS setTimeout函數(shù)不兼容失效不執(zhí)行的方法
- jQuery setTimeout()函數(shù)使用方法
- js函數(shù)setTimeout延遲執(zhí)行的簡單介紹
- JS中setInterval、setTimeout不能傳遞帶參數(shù)的函數(shù)的解決方案
- js函數(shù)使用技巧之 setTimeout(function(){},0)
- javascript setTimeout()傳遞函數(shù)參數(shù)(包括傳遞對象參數(shù))
- 定時器(setTimeout/setInterval)調(diào)用帶參函數(shù)失效解決方法
- 給c#添加SetTimeout和SetInterval函數(shù)
- setTimeout函數(shù)的神奇使用
相關(guān)文章
(跨瀏覽器基礎(chǔ)事件/瀏覽器檢測/判斷瀏覽器)經(jīng)驗代碼分享
一些js代碼,自己備用的,高手不要笑話我。(跨瀏覽器基礎(chǔ)事件,瀏覽器檢測,判斷瀏覽器的名稱、版本號、操作系統(tǒng))等等,很實用的,方便自己使用,感興趣的朋友可以了解下,希望本文對你有所幫助2013-01-01Javascript數(shù)組的?splice?方法詳細介紹
這篇文章主要介紹了Javascript數(shù)組的splice方法詳細介紹,splice方法通過刪除或替換現(xiàn)有元素或者原地添加新的元素來修改數(shù)組,并以數(shù)組形式返回被修改的內(nèi)容。此方法會改變原數(shù)組2022-09-09JS實現(xiàn)點擊鏈接取消跳轉(zhuǎn)效果的方法
有時候我們僅僅希望將鏈接<a>作為一個按鈕使用,但是在默認狀態(tài)下,點擊鏈接會出現(xiàn)跳轉(zhuǎn)效果,下面就通過代碼實例,介紹一下如何實現(xiàn)此效果2014-01-01