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 () {},
   })
}

 

posted @ 2020-11-23 16:36  隔壁老于头  阅读(896)  评论(0编辑  收藏  举报