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>
相關文章
- Jscript中window.setInterval和window.setTimeout區別JS
- 深度解密setTimeout和setInterval——為setInterval正名!解密
- 使用setTimeout實現setInterval
- VUE中setTimeout和setInterval自動銷燬Vue
- setTimeout 和 setInterval 的區別
- JS動畫三劍客——setTimeout、setInterval、requestAnimationFrameJS動畫requestAnimationFrame
- 從setTimeout/setInterval看JS執行緒JS執行緒
- 定時器(setInterval、setTimeout 和requestAnimationFrame)定時器requestAnimationFrame
- javascript定時器(setTimeout和setInterval)的使用詳解JavaScript定時器
- setInterval()與setTimeout()區別
- JavaScript setTimeout() 介紹JavaScript
- JavaScript - 函式 setTimeout 和 setInterval 的比較JavaScript函式
- setTimeout()和setInterval() 何時被呼叫執行
- js 定時器用法詳解——setTimeout()、setInterval()、clearTimeout()、clearInterval()JS定時器
- SetTimeout、SetInterVal、setImmediate和process.nextTick的理解
- 用setTimeout和clearTimeout簡單實現setInterval與clearInterval
- setInterval和setTimeout區別(驗證碼倒數計時)
- JavaScript深入淺出非同步程式設計一、setTimeout和setIntervalJavaScript非同步程式設計
- JDK中內嵌JS引擎介紹及使用JDKJS
- html中的錨點介紹和使用HTML
- js中匿名函式的使用簡單介紹JS函式
- 定時器(setTimeout/setInterval)最小延遲的問題定時器
- js中的JSON介紹與案例JSON
- Redis介紹和使用Redis
- langchain中的chat models介紹和使用LangChain
- XML和JSON的介紹XMLJSON
- 文件模型(JSON)使用介紹模型JSON
- 使用 nodejs 寫爬蟲(-): 常用模組介紹和前置JS語法NodeJS爬蟲
- js中typeof用法詳細介紹JS
- ddddocr基本使用和介紹
- setTimeout和setInterval的區別以及如何寫出效率高的倒數計時
- delphi中Treeview的使用介紹View
- three.js中的相機介紹JS
- js中getBoundingClientRect()的用法介紹JSGCclient
- setTimeout()方法傳遞超過兩個引數介紹
- iOS Runtime介紹和使用iOS
- Python JWT 介紹和使用PythonJWT
- Charles 功能介紹和使用教程