代码之家  ›  专栏  ›  技术社区  ›  Aditya Singh

Javascript函数调用

  •  1
  • Aditya Singh  · 技术社区  · 14 年前

    如何在窗口的onload事件上调用多个javascript函数?

    对于前任,

                 window.onload=MyFunc(); //Single Function
    

    但是如果在窗口的onload事件上有多个函数要调用呢。。。

    4 回复  |  直到 14 年前
        1
  •  11
  •   tdammers    14 年前

    把它们包起来。

    window.onload = function() { MyFunc(); MyOtherFunc(); }
    
        2
  •  4
  •   nnevala    14 年前

    window.addEventListener("load", MyFunction, false);
    window.addEventListener("load", MyOtherFunction, false);
    

    对于IE legacy,您可能需要使用attachEvent方法:

    window.attachEvent("load", MyFunction);
    window.attachEvent("load", MyOtherFunction);
    

        3
  •  1
  •   Ramiz Uddin    14 年前

    下面是一个示例,它将解释如何:

    // create an array that will contain all 
    // your functions that you would like to 
    // call on page load
    var pageOnLoadEvents = [];
    
    // Add one or more functions in pageOnLoadEvents array
    pageOnLoadEvents.push(function() { alert("Hello!"); })
    pageOnLoadEvents.push(function() { alert("How are you?"); })
    
    
    // This will call when your page will load
    window.onload = function() {
      // Loop through each index of pageOnLoadEvents
      for(var index = 0; index < pageOnLoadEvents.length; index++) {
       // '()' brackets in the end tell them to make a call
       // If you don't include '()' at the end this will
       // suspect as a object as in JavaScript functions 
       // are first-class objects.
       // document.write(pageOnLoadEvents[index].toString()); // treat as object
       pageOnLoadEvents[index]();
      }
    }
    

    上面的例子试图简单地解释你的问题。然而,有一个很好的解释 Simon Willison’s Weblog ,他写道:

    function addLoadEvent(func) {
      var oldonload = window.onload;
      if (typeof window.onload != 'function') {
        window.onload = func;
      } else {
        window.onload = function() {
          if (oldonload) {
            oldonload();
          }
          func();
        }
      }
    }
    
    addLoadEvent(nameOfSomeFunctionToRunOnPageLoad);
    addLoadEvent(function() {
      /* more code to run on page load */ 
    });
    

    addLoadEvent函数将 页面加载后执行。 不同于直接分配给 以这样的方式 先被处决。 Read more

        4
  •  0
  •   deveffort    14 年前

    为什么不采用一种老派的方法,即在页面加载时调用一个函数中的多个函数调用呢? window.addEventListener(“加载”,Foo,false);

    其中Foo调用了所有必需的函数。 这样,如果需要,您可以控制顺序和返回值。