onclick 定义的方法 在$(function(){})或window.onload=function(){}中无效
$(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 () {}, }) }