黑马程序员技术交流社区

标题: 问一个关于onload方法的问题, ^_^ [打印本页]

作者: 蓝雨星空    时间: 2013-10-3 22:24
标题: 问一个关于onload方法的问题, ^_^
本帖最后由 蓝雨星空 于 2013-10-6 00:10 编辑

         在head中定义script程序,然后使用onload方法,就是网页加载完成再执行这个程序,但是如果是  onload=程序名() 这样的方式却不能获取到table的节点,而使用         onload=function(){程序名()}   这样却又可以,有没有哪个同学知道怎么回事?

作者: 陈钦涛    时间: 2013-10-3 22:52
本帖最后由 陈钦涛 于 2013-10-3 23:24 编辑

onload=程序名()应该写成onload=程序名,否则就是赋值形式的了,所以加载不了。
onload=function(){} 这个是匿名函数,页面加载完毕就能执行这个函数了。
作者: 麦子    时间: 2013-10-3 23:04
楼上正解
作者: 深情小建    时间: 2013-10-4 10:36

js window.onload 加载多个函数的两种方法

网站设计中window.onload,方法在项目中经常被使用,用法如下:

  1. function fun(){
  2.                         alert("window的Onload事件被触发啦!");return;
  3. }  
  4. window.onload=fun;
复制代码

或者如下:

  1. window.onload=function(){alert("window的Onload事件被触发啦!");return;}
复制代码

1.问题:

但window.onload 不能同时加载多个函数。比如:

  1. function fun1(){

  2. alert("fun1")

  3. }

  4. function fun2(){

  5. alert("fun2")

  6. }

  7. window.onload =fun1 ;

  8. window.onload =fun2 ;
复制代码

后面会把前面的覆盖,上面代码只会输出 fun2。


2.解决方法

方法一:  

写一个总的函数调用需要触发的函数

  1. window.onload =function() { fun1();  fun2(); }
复制代码
方法二:

写一个方法

使用addLoadEvent(func)   

使用如下:

  1. function fun1(){

  2. alert("fun1")

  3. }

  4. function fun2(){

  5. alert("fun2")

  6. }

  7. function fun3(){

  8. alert("fun3")

  9. }

  10. function addLoadEvent(func) {

  11.   var oldonload = window.onload;

  12.   if (typeof window.onload != 'function') {

  13.     window.onload = func;

  14.   } else {   

  15.     window.onload = function() {

  16.       oldonload();

  17.       func();

  18.     }

  19.   }

  20. }

  21. addLoadEvent(fun1);

  22. addLoadEvent(fun2);

  23. addLoadEvent(fun3);

  24. //等价于  window.onload =function() { fun1();  fun2(); fun3() ;}
复制代码

作者: 乔兵    时间: 2013-10-4 12:38
如果问题已经解决,请重新编辑帖子,修改帖子的主题分类为“提问结束”{:soso_e181:}
作者: 蓝雨星空    时间: 2013-10-6 00:11
原来是在小细节上出了错,谢谢各位的热心回答,{:soso_e128:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2