JavaScript: window.onload = function() {} 里面的函數不執行


問題:寫了一個最簡單的頁面。在script標簽中使用的 window.onload = function() { function add() { //... } }

頁面上:<div onclick="add()"></div>

但是,函數不僅沒有觸發,同時控制台報錯:add() is not defined.

 

分析:這里需要兩個背景知識:1)HTML頁面執行順序為自上而下;2)window.onload=function() {}會等頁面全部加載完畢后再執行。

基於上面兩點,當程序執行到window.onload的時候,不會去解析里面的內容。但是,當解析到div標簽上的onclick函數的時候,就會去找add()函數,這個時候發現程序里面是沒有的,所以就會報錯。

 

解決:這個時候,可以使用obj.onclick = add; 就可以了。

 

注意:1)obj: 這個是些onclick事件的那個標簽的DOM對象;2)add后面不需要加()。如果加了就成了閉包,所以,直接寫名字就可以了。這是兩個需要注意的細節。

 

參考:https://www.cnblogs.com/magicgua/p/4363903.html#commentform

感謝@magicgua的分享


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM