setInterval()呼叫其他函式時候報錯
在使用定時器函式的setInterval()的時候,可能會遇到這樣的情況,明明感覺程式碼沒有任何錯誤,但是使用setInterval()定時器函式迴圈執行指定函式的時候,卻出現在指定作用域找不到函式的現象,下面就介紹一下出現此問題的原因。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script type="text/javascript"> window.onload=function(){ var oshow=document.getElementById("show"); var count=0; function done(){ count=count+1; oshow.innerHTML=count; } setInterval("done()",1000); } </script> </head> <body> <div id="show"></div> </body> </html>
上面的程式碼會報錯,說函式done()沒有定義,這是因為當使用字串作為setInterval()第一個引數的時候,它的處理方式有點類似於在表中瀏覽器的window.eval(),總是在全域性作用域查詢函式,所以作為區域性作用域中的done()函式無法被查詢到。
程式碼修改如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script type="text/javascript"> var count=0; var oshow function done(){ count=count+1; oshow.innerHTML=count; } window.onload=function(){ oshow=document.getElementById("show"); setInterval("done()",1000); } </script> </head> <body> <div id="show"></div> </body> </html>
上面的程式碼可以成功執行,這裡就不多介紹了,如有任何問題可以跟帖留言。
相關文章
- setInterval()由於作用域問題找不到呼叫函式報錯函式
- Lua封裝函式模組並由其他模組呼叫封裝函式
- 什麼時候使用 Lambda 函式?函式
- setInterval 回撥函式傳引數函式
- setTimeout()和setInterval() 何時被呼叫執行
- 如何讓其他模型也能在SemanticKernel中呼叫本地函式模型函式
- C程式碼在編譯的時候,有時候有些函式會被最佳化掉,直接把函式程式碼編譯進呼叫函式里,那在函式宣告前加入“__attribute__((noinline))”C程式編譯函式inline
- 什麼時候呼叫layoutSubviewsView
- rsync 客戶端同步的時候報錯客戶端
- 執行dbca命令的時候報錯了
- JavaScript - 函式 setTimeout 和 setInterval 的比較JavaScript函式
- 在vue生命週期裡呼叫函式時犯的一個錯誤Vue函式
- 物理data guard備standby庫的時候報錯。
- oracle 10g函式大全--其他函式Oracle 10g函式
- 子函式呼叫函式
- 函式呼叫棧函式
- 什麼時候你不能使用箭頭函式?函式
- 解決vue使用Sass時候的報錯問題Vue
- suse10啟動vsftp的時候報錯FTP
- __cxa_pure_virtual報錯(g++編譯虛擬函式時)編譯函式
- 誰遇到過執行 monkey 的時候報 filenotfound 的報錯
- C++建構函式和解構函式呼叫虛擬函式時使用靜態聯編C++函式
- Oracle 函式大全(字串函式,數學函式,日期函式,邏輯運算函式,其他函式)Oracle函式字串
- 函式呼叫時用const保護指標函式指標
- 當Bcrypt與其他Hash函式同時使用時造成的安全問題函式
- oracle RAC dbca的時候報錯提示cluster nodes are not accessibleOracle
- crontab 新增計劃任務的時候報錯疑問?
- 提交App Store的時候報錯java.lang.reflect.InvocationTargetExceptionAPPJavaException
- 外部函式的呼叫函式
- gdb 如何呼叫函式?函式
- 函式指標呼叫函式指標
- C程式函式呼叫&系統呼叫C程式函式
- PostgreSQL函式裡呼叫函式(SETOF + RETURN QUERY)SQL函式
- JS中函式內套函式的呼叫JS函式
- js函式 函式自呼叫 返回函式的函式 (閉包)JS函式
- 完美解決呼叫“sudo rosdep init“命令時的報錯ROS
- 自帶的 print 函式居然會報錯?函式
- WireMock 的時候報錯:No response could be served as there are no stub mappings in this WireMockREMMockAPP