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>
上面的程式碼可以成功執行,這裡就不多介紹了,如有任何問題可以跟帖留言。
相關文章
- 如何讓其他模型也能在SemanticKernel中呼叫本地函式模型函式
- setInterval 回撥函式傳引數函式
- C程式碼在編譯的時候,有時候有些函式會被最佳化掉,直接把函式程式碼編譯進呼叫函式里,那在函式宣告前加入“__attribute__((noinline))”C程式編譯函式inline
- Lua封裝函式模組並由其他模組呼叫封裝函式
- JavaScript - 函式 setTimeout 和 setInterval 的比較JavaScript函式
- 在vue生命週期裡呼叫函式時犯的一個錯誤Vue函式
- 子函式呼叫函式
- 函式呼叫棧函式
- 函式呼叫時用const保護指標函式指標
- 間隔呼叫方法(setInterval與setTimeout)
- 關於使用toFixed()函式時報錯”toFixed() is not a function”的問題函式Function
- C++建構函式和解構函式呼叫虛擬函式時使用靜態聯編C++函式
- 外部函式的呼叫函式
- gdb 如何呼叫函式?函式
- C程式函式呼叫&系統呼叫C程式函式
- 誰遇到過執行 monkey 的時候報 filenotfound 的報錯
- __cxa_pure_virtual報錯(g++編譯虛擬函式時)編譯函式
- 當Bcrypt與其他Hash函式同時使用時造成的安全問題函式
- PostgreSQL函式裡呼叫函式(SETOF + RETURN QUERY)SQL函式
- 普通函式與函式模板呼叫規則函式
- oracle RAC dbca的時候報錯提示cluster nodes are not accessibleOracle
- 解決vue使用Sass時候的報錯問題Vue
- WireMock 的時候報錯:No response could be served as there are no stub mappings in this WireMockREMMockAPP
- count函式與order by子句一起查詢時報錯處理函式
- 普通函式與函式模板呼叫規則2函式
- httprunner yml 呼叫外部函式HTTP函式
- crontab 新增計劃任務的時候報錯疑問?
- 自帶的 print 函式居然會報錯?函式
- 如何使用函式指標呼叫類中的函式和普通函式函式指標
- AppDelegate中幾個常用回撥函式的呼叫時機APP函式
- 完美解決呼叫“sudo rosdep init“命令時的報錯ROS
- 核心函式 系統呼叫 系統命令 庫函式函式
- PHP-fpm Linux 環境使用 exec 函式呼叫 FFmpeg,報錯 FFmpeg: command not found 的解決方法PHPLinux函式
- Python會在什麼時候被其他語言取代Python
- 函式呼叫與空間分配函式
- 函式呼叫棧的問題函式
- 函式棧幀(呼叫過程)函式
- 虛擬函式的呼叫原理函式
- vue跨頁面呼叫函式Vue函式