$(function(){ }) 或 window.onload=function(){} 表示頁面加載完成后執行,html文檔從至上而下解析的時候 ; 解析到onclick="showAlert()"方法的時候寫在$(function(){ }) 或 window.onload=function(){} 里的方法還沒有聲明,會報錯。
window.onload 和 $(function(){})的 區別:
window.onload是js原生,$(function(){})需要引用jquery庫才生效;
多個window.onload=function(){}會被覆蓋,只執行最后一個;
多個$(function(){})都執行
$(function () { console.log("ready執行"); }); $(function() { console.log("ready1執行"); }); window.onload = function () { console.log('load執行'); }; window.onload = function () { console.log('load1執行'); } //結果 ready執行 ready1執行 load1執行
解決:
如果將showAlert()方法寫道$(function(){ }) 或 window.onload=function(){} 外,html文檔從至上而下解析會遇到function showAlert(){}的方法,就會在內存中開辟一個新的空間來對函數進行存儲,方便以后進行調用。所以該方法起作用。
當然如果在$(function(){ }) 或 window.onload=function(){} 內有你需要的變量,你的方法寫到外面就會獲取不到。可以
//在內部聲明全局方法 window.untreatedMsg = untreatedMsg; function untreatedMsg(bigareaid, dt) { $.ajax({ url: ``, type: "GET", success: function (res) { }, error: function () {}, }) }