`

使用window.onload执行多个函数时遇到的奇怪问题

阅读更多

在做项目时,需要在页面加载完后初始化一些数据,比如下拉框中的数据,我使用的是window.onload方法,因为要加载两个函数,所以刚开始是这样写的(其中A、B是函数名):

 

window.onload = function(){A();B();}

 但是运行后发现页面只初始化了一个下拉框数据,也就是说只执行了其中的一个方法,很是郁闷,在网上查了下原因,才知道原来不能通过onload方法调用多个函数,如果确实要实现这样的功能,则要加如下的一个函数:

function addLoadEvent(func) {  
    var oldonload = window.onload;  

    if (typeof window.onload != 'function') {  
        window.onload = func;  
    } else {  
        window.onload = function() {  
        oldonload();  
        func();  
        }  
    }  
} 

 然后多次调用这个函数就可以了。

 

 

本以为这样会万事大吉,没想到还是遇到一个很不解的问题:

 

当我把addLoadEvent(func)函数和A()、B()函数一起写在一个js文件中,然后在jsp里调用,结果还是只执行了一个函数;

而当我把addLoadEvent(func)函数从js文件挪到要使用它的jsp页面后,奇迹出现了,该加载的数据都加载上了。

 

虽然问题解决了,但是不太明白为啥会这样?哭

分享到:
评论

相关推荐

    window.addEventListener来解决让一个js事件执行多个函数

    可能你也碰到过这种情况,就是在js的代码中用了[removed]后,可能会影响到body中的onload事件。你可以全写在body中,也可以全放到... 代码如下: if (document.all){ window.attachEvent(‘onload’,函数名)//IE中 } els

    javascript函数的解释

    18.当文件中出现多个form表单时.可以用document.forms[0],document.forms[1]来代替. 19.窗口:打开窗口window.open(), 关闭一个窗口:window.close(), 窗口本身:self 20.状态栏的设置:window.status="字符"; 21.弹出...

    js [removed] 加载多个函数和追加函数详解

    平时做项目 经常需要使用[removed], 用法如下: function func(){alert&#...但[removed] 不能同时加载多个函数。 比如: function t(){alert(“t”)}function b(){alert(“b”)}[removed] =t ;window.

    107个常用javascript语句

    18.当文件中出现多个form表单时.可以用document.forms[0],document.forms[1]来代替. 19.窗口:打开窗口window.open(), 关闭一个窗口:window.close(), 窗口本身:self "fullscreen=no,channelmode=no,toolbar=no,...

    java swfupload 多文件上传js

    初始化通常在window.onload事件中进行,通过SWFUpload的构造函数来完成。 方法一: 复制代码 var swfu; window.onload = function () { swfu=new SWFUpload({ upload_url:"http://www.swfupload.org/upload.php"...

    js使用小技巧

    <body onload="window.resizeTo(window.screen.width - 4,window.screen.height-50);window.moveTo(-4,-4)"> 无关闭按钮IE window.open("aa.htm", "meizz", "fullscreen=7"); 统一编码/解码 alert...

    利用WebBrowser彻底解决Web打印问题(包括后台打印)

    WebBrowser有很多功能,除打印外的其他功能就不再赘述了,你所能用到的打印功能也几乎全部可以靠它完成,下面的问题就是如何使用它了。先说显示后打印,后面说后台打印。1.首先引入一个WebBrowser在需要打印的页面...

    精通javascript

    方法与confirm()方法的使用 • 14.3.htm prompt()方法的使用 • 14.4.htm window.open()方法 • 14.5.htm 用链接和按钮实现窗口打开 • 14.6.htm 窗口的打开和关闭 • 14.7....

    精通JavaScript

    1.本书附源代码共计381个,其运行环境如下: IE 5或更高版本 Mozilla Firefox 1.5.0.3或更高版本 服务器采用IIS5.1 或以上版本 数据库使用MS Access 2000以上 2.本书所附光盘实例代码: 第1章(\第1章) 查看...

    简体转繁体插件

    * window.onload = function () { * $.init('xxx'); * } * * 繁體中文 * *1.实现原理,说白了吧,就是递归遍历所有 HTML DOM元素并取其值,然后进行转换 2.缺点cpu消耗较大些,但是也分业态。总体还不错, ...

    JQuery下关于$.Ready()的分析

    加载多个函数的问题 <body onload=”a();b();”> </body> 在Onload事件中只能这样加载,很丑陋…而在JQuery中你可以利用多个JQuery.Ready()方法,它们会按次序依次执行 2.代码和内容不分离 这个貌似不用...

    js [removed] 加载多个函数的方法

    用法如下: function func(){alert(...} 但[removed] 不能同时加载多个函数。 比如: 代码如下: function t(){ alert(“t”) } function b(){ alert(“b”) } [removed] =t ; [removed] =b ; 后面

    大名鼎鼎SWFUpload- Flash+JS 上传

    什么是SWFUpload?  SWFUpload是一个客户端文件上传工具...使用SWFUpload遇到的多数问题是由不正确地设置或者定义了糟糕的处理事件引起的。 初始化和设置 SWFpload必须在页面中初始化,一般可以在window.onload事件中...

    ExtAspNet_v2.3.2_dll

    +为所有Panel(包括Grid,Tree,Form等)增加枚举类型Icon,其中包含1700多个小图标。 -如果Panel具有IconUrl属性,则IconUrl优先于Icon。 -所有Icon的列表在icon.aspx。 -为Button,MenuItem(MenuButton,...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    +为所有Panel(包括Grid,Tree,Form等)增加枚举类型Icon,其中包含1700多个小图标。 -如果Panel具有IconUrl属性,则IconUrl优先于Icon。 -所有Icon的列表在icon.aspx。 -为Button,MenuItem(MenuButton,...

    JQuery Tips相关(1)—-关于$.Ready()

    最近一直在研究JQuery,这个东西还是很博大精深的.下面分享一下我的学习总结. ...1.加载多个函数的问题 <body onload="a();b();"> </body>  在Onload事件中只能这样加载,很丑陋…而在JQuer

    JavaScript详解(第2版)

     10.1.2 window对象的使用   10.1.3 创建定时事件   10.1.4 Frame的使用   10.1.5 location对象   10.1.6 history对象   10.1.7 screen对象   10.2 应知应会   练习   第11章 表单及输入...

    JavaScript语言参考手册

    多个语句可以出现在一行上,但各自中间应该用分号隔开。 break comment continue delete do...while export for for...in function if...else import labeled return switch var while with 第四章 核心 这一章...

    javascript框架设计读书笔记之模块加载系统

    模块加载,其实就是把js分成很多个模块,便于开发和维护。因此加载很多js模块的时候,需要动态的加载,以便提高用户体验。 在介绍模块加载库之前,先介绍一个方法。 动态加载js方法: 代码如下: function loadJs...

Global site tag (gtag.js) - Google Analytics