setTimeout()設定延遲時間為0毫秒的作用
關於setTimeout()函式的基本用法這裡就不多介紹了。
具體可以參閱setTimeout()函式用法詳解一章節。
也就是說此函式可以設定指定函式的執行的延遲時間,但是在實際應用中,setTimeout()函式的延遲時間設定0,感覺這毫無道理。
看下面的程式碼例項:
[JavaScript] 純文字檢視 複製程式碼obt.onmousedown=function(){ setTimeout(function(){ document.getElementById('txt').focus(); },0); };
是不是感覺上面的程式碼毫無道理,為何不直接呼叫函式,而非要將其放入setTimeout()函式中,並且將其設定為0秒以後執行。下面來看一段程式碼例項:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script type="text/javascript" > function get(id){ return document.getElementById(id); } window.onload=function(){ get('bt').onmousedown=function(){ var input = document.createElement('input'); input.setAttribute('type','text'); input.setAttribute('value','softwhy.com'); get('box').appendChild(input); input.focus(); input.select(); } } </script> </head> <body> <button id="bt">建立文字框</button> <p id="box"></p> </body> </html>
在上面的程式碼中,滑鼠按下按鈕可以建立一個文字框,但是文字框中的內容不會被選中。
說明:這裡之所以使用onmousedown事件,是因為此事件內部處理可能會導致文字框無法被選中,如果使用其他時間就會被選中。
程式碼修改如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script type="text/javascript" > function get(id){ return document.getElementById(id); } window.onload=function(){ get('bt').onmousedown=function(){ var input = document.createElement('input'); input.setAttribute('type','text'); input.setAttribute('value','softwhy.com'); get('box').appendChild(input); setTimeout(function(){ input.focus(); input.select(); },0); } } </script> </head> <body> <button id="bt">建立文字框</button> <p id="box"></p> </body> </html>
在上面的程式碼中,點選建立文字框之後,文字框中的內容可以被選中。
這是因為使用setTimeout()函式中,就形成了非同步操作,將選中等操作單獨形成一個任務,這樣的話,onmousedown事件不會對其產生相關選中方面的影響,於是就可以實現文字的選中效果,更多內容可以參閱下面的相關閱讀。
相關閱讀:
1.setTimeout()函式和ajax所謂的非同步操作一章節。
2.javascript非同步操作和定時器原理詳解一章節。
相關文章
- 指定執行緒延遲時間(毫秒)執行緒
- 定時器(setTimeout/setInterval)最小延遲的問題定時器
- JMeter定時器設定延遲與同步JMeter定時器
- Bash: sleep - 延遲指定時間
- DNS設定引起的登入延遲DNS
- QWidget設定layout時的延遲重新整理問題
- 【 js 基礎 】 setTimeout(fn, 0) 的作用JS
- 為jQuery的$.ajax設定超時時間jQuery
- SQL Server 2012 AlwaysON 同步延遲時間SQLServer
- win10 鍵盤延遲怎麼設定_win10鍵盤延遲設定在哪裡Win10
- jQuery實現的元素延遲指定時間之後隱藏jQuery
- Android優化(三)_延遲電池續航時間Android優化
- dataguard主備延遲多長時間的2種查詢方法
- go-zero 如何應對海量定時/延遲任務?Go
- setTimeout()函式延遲迴圈語句的異常簡單介紹函式
- Android非同步、延遲和定時任務的簡易用法Android非同步
- Windows10系統怎麼設定延遲更新Windows
- Fiddler(8)設定網路丟包和延遲
- js實現0ms延時定時器的幾種方式JS定時器
- Cookie 作用,互動過程解析,設定,獲取,刪除,生效時間的設定Cookie
- 解決歷理 win11延遲系統更新時間
- 一個有延時作用的程式
- MySQL設定當前時間為預設值的方法MySql
- Win10系統設定觸控板延遲功能的方法Win10
- 延時 (遲) 操作的 PHP 簡單實現PHP
- RabbitMQ延遲訊息的延遲極限是多少?MQ
- layui laydate日期時間範圍,時間預設設定為23:59:59UI
- session超時時間的設定Session
- 03 Windows批處理的作用域和延遲擴充套件Windows套件
- 面試官:RabbitMQ過期時間設定、死信佇列、延時佇列怎麼設計?面試MQ佇列
- Sqlserver的欄位datetime型別預設值設為getdate()時,設值毫秒為000SQLServer型別
- JS 時間戳(毫秒)轉化為標準時間格式(YYYY-MM-DD HH:mm:ss)JS時間戳
- 定時器(setInterval、setTimeout 和requestAnimationFrame)定時器requestAnimationFrame
- 如何利用網路延遲穿越時空
- goldengate抽取程式延遲90小時Go
- 【Linux-時間設定】-設定時區並調整時間Linux
- mysql之 誤用SECONDS_BEHIND_MASTER衡量MYSQL主備的延遲時間MySqlAST
- 請不要用SECONDS_BEHIND_MASTER來衡量MYSQL主備的延遲時間ASTMySql