問題:寫了一個最簡單的頁面。在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的分享