JS中setInterval和setTimeout使用介紹
setTimeout和setInterval的相同處
setTimeout和setInteval 都是window物件的定時方法,它們語法基本上相同。它們都有兩個引數,一個是將要執行的程式碼字串,還有一個是以毫秒為單位的時間間隔,當過了那個時間段之後就將執行那段程式碼。
setTimeout和setInterval的區別
setTimeout方法是定時程式,也就是在什麼時間以後幹什麼。幹完了就拉倒。
setInterval方法則是表示間隔一定時間反覆執行某操作。
如果用setTimeout實現setInerval的功能,就需要在執行的程式中再定時呼叫自己才行。
如果要清除定時器則根據建立定時器時使用的方法呼叫不同的清除方法:
例如:timer=setTimeout('startShow()',2000);
clearTimeout(timer);
或者:timer=setInterval('startShow()',2000);
clearInterval(timer);
setTimeout和setInterval 使用例子
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>setTimeout() 使用例子 - Web開發者 Admin10000.com </title> <script type="text/javascript"> var initValue=0; var timer=null; function startShow() { var obj = document.getElementById("message"); obj.innerHTML = obj.innerHTML + " " + (++initValue).toString(); timer=window.setTimeout("startShow()",2000); } function stop() { window.clearTimeout(timer); } </script> </head> <body> <div id="message"></div> <br/> <input type="button" value="啟動" onclick="startShow();"/> <input type="button" value="停止" onclick="stop();"/> </body> </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>setInterval() 使用例子 - Web開發者 Admin10000.com </title> <script type="text/javascript"> var initValue=0; var timer=null; function startShow() { var obj = document.getElementById("message"); obj.innerHTML = obj.innerHTML + " " + (++initValue).toString(); } function stop() { window.clearInterval(timer); } </script> </head> <body> <div id="message"></div> <br/> <input type="button" value="啟動" onclick="timer=setInterval('startShow()',2000)"/> <input type="button" value="停止" onclick="stop();"/> </body> </html>
向setTimeout、setInterval傳遞函式引數
1、採用字串形式
例如:timer=window.setTimeout("startShow("+id+")",2000)
這樣只能傳字串、數字,對傳遞object就無能為力了。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>setTimeout() 傳遞函式引數例子 - Web開發者 Admin10000.com </title> <script type="text/javascript"> var initValue=0; var timer=null; function startShow(id) { var obj = document.getElementById("message"); obj.innerHTML = obj.innerHTML + " " + (++initValue+id).toString(); timer=window.setTimeout("startShow("+id+")",2000); } function stop() { window.clearTimeout(timer); } </script> </head> <body> <div id="message"></div> <br/> <input type="button" value="啟動" onclick="startShow(10);"/> <input type="button" value="停止" onclick="stop();"/> </body> </html>
2、匿名函式包裝
支援物件引數。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>setTimeout() 傳遞函式引數例子 - Web開發者 Admin10000.com </title> <script type="text/javascript"> var initValue=0; var timer=null; function startShow(id) { var obj = document.getElementById("message"); obj.innerHTML = obj.innerHTML + " " + (++initValue+id).toString(); timer=window.setTimeout(function(){startShow(id)},2000); } function stop() { window.clearTimeout(timer); } </script> </head> <body> <div id="message"></div> <br/> <input type="button" value="啟動" onclick="startShow(10);"/> <input type="button" value="停止" onclick="stop();"/> </body> </html>
3、定義返回無參函式的函式
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>setTimeout() 傳遞函式引數例子 - Web開發者 Admin10000.com </title> <script type="text/javascript"> var initValue=0; var timer=null; function startShow(id) { var obj = document.getElementById("message"); obj.innerHTML = obj.innerHTML + " " + (++initValue+id).toString(); timer=window.setTimeout(_startShow(id),2000); } function _startShow(id) { return function() { startShow(id); } } function stop() { window.clearTimeout(timer); } </script> </head> <body> <div id="message"></div> <br/> <input type="button" value="啟動" onclick="startShow(10);"/> <input type="button" value="停止" onclick="stop();"/> </body> </html>
4、修改setTimeout、setInterval
程式碼其實就很簡單,過載了一下window.setTimeout,用apply去回撥前面的function。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>setTimeout() 傳遞函式引數例子 - Web開發者 Admin10000.com </title> <script type="text/javascript"> var _st = window.setTimeout; window.setTimeout = function(fRef, mDelay) { if(typeof fRef == 'function'){ var argu = Array.prototype.slice.call(arguments,2); var f = (function(){ fRef.apply(null, argu); }); return _st(f, mDelay); } return _st(fRef,mDelay); } var initValue=0; var timer=null; function startShow(id) { var obj = document.getElementById("message"); obj.innerHTML = obj.innerHTML + " " + (++initValue+id).toString(); timer=window.setTimeout(startShow,2000,id); } function stop() { window.clearTimeout(timer); } </script> </head> <body> <div id="message"></div> <br/> <input type="button" value="啟動" onclick="startShow(10);"/> <input type="button" value="停止" onclick="stop();"/> </body> </html>
相關文章
- 深度解密setTimeout和setInterval——為setInterval正名!解密
- setTimeout && setInterval
- VUE中setTimeout和setInterval自動銷燬Vue
- 從setTimeout/setInterval看JS執行緒JS執行緒
- 關於setInterval和setTImeout中的this指向問題
- 定時器(setInterval、setTimeout 和requestAnimationFrame)定時器requestAnimationFrame
- JS動畫三劍客——setTimeout、setInterval、requestAnimationFrameJS動畫requestAnimationFrame
- javascript定時器(setTimeout和setInterval)的使用詳解JavaScript定時器
- JavaScript setTimeout() 介紹JavaScript
- setInterval()與setTimeout()區別
- SetTimeout、SetInterVal、setImmediate和process.nextTick的理解
- JavaScript - 函式 setTimeout 和 setInterval 的比較JavaScript函式
- 用setTimeout和clearTimeout簡單實現setInterval與clearInterval
- 間隔呼叫方法(setInterval與setTimeout)
- setInterval和setTimeout區別(驗證碼倒數計時)
- JavaScript深入淺出非同步程式設計一、setTimeout和setIntervalJavaScript非同步程式設計
- JDK中內嵌JS引擎介紹及使用JDKJS
- setInterval 、 settimeout 、clearInterval 用法(特殊情況下代替schedule)
- langchain中的chat models介紹和使用LangChain
- 定時器(setTimeout/setInterval)最小延遲的問題定時器
- Redis介紹和使用Redis
- The Graph介紹和使用
- js中的JSON介紹與案例JSON
- iOS Runtime介紹和使用iOS
- ddddocr基本使用和介紹
- LayerMask 的介紹和使用
- BlockingQueue 的介紹和使用BloC
- Python JWT 介紹和使用PythonJWT
- PEG.js 介紹與基礎使用JS
- mybatis中@Mapper使用介紹MyBatisAPP
- three.js中的相機介紹JS
- [譯]JS閉包:For迴圈中的setTimeoutJS
- 使用 nodejs 寫爬蟲(-): 常用模組介紹和前置JS語法NodeJS爬蟲
- Charles 功能介紹和使用教程
- web worker的介紹和使用Web
- 【Linux】jq 命令介紹和使用Linux
- clang-format的介紹和使用ORM
- Web Storage API的介紹和使用WebAPI
- js--陣列的reduce()方法的使用介紹JS陣列