代码之家  ›  专栏  ›  技术社区  ›  lilHar

重构onload以添加第二个函数?另外:一般来说,给变量添加第二个函数怎么样?

  •  0
  • lilHar  · 技术社区  · 8 年前

    我有两个问题要问?

    我有两组正在重构的代码。每个都有一个加载。

    两者都将在一个网站上运行,但我不希望它们覆盖彼此的负载。

    所以我的意思是:

    window.onload=function(){ alert("foo")};
    

    和

    window.onload=function(){ alert("bar")};
    

    在两个文件里。

    为了避免其中一个覆盖窗口。加载另一个的分配,我将它们重构为:

    window.onload+=function(){ alert("foo")};
    

    和

    window.onload+=function(){ alert("bar")};
    

    但似乎两次都没着火。

    既然它看起来有助于我了解情况,而且通常是一项不错的技能,我如何向函数变量添加额外的函数?(与onload相同,还是onload是特例?我觉得这可能有特殊情况。)

    所以如果我有…

    var Varrick = function(){ alert("Do the thing!");}
    

    我有

    var Zhu_li = function (){ alert("Did the thing."); }
    

    什么是有效的指挥

    var Varrick = Varrick + Zhuli.
    

    所以…

    Varrick(); // Alerts "Do the thing!" then alerts "Did the thing."
    

    注意:我想在不依赖jquery的情况下完成这项工作。

    1 回复  |  直到 8 年前
        1
  •  5
  •   CertainPerformance    8 年前

    这就是为什么分配给 on- 属性通常不是一个好主意——如果先前在该属性上存在任何东西,它将被覆盖,因此只有最新的处理程序才会启动。(不要试图 += 相互作用)

    尝试添加 DOMContentLoaded 相反,听众:

    function foo() {
      console.log('foo');
    }
    function bar() {
      console.log('bar');
    }
    document.addEventListener("DOMContentLoaded", foo);
    document.addEventListener("DOMContentLoaded", bar);
    

    如何向函数变量添加其他函数?

    如果你 有 要只拥有一个侦听器,只需调用侦听器中的两个函数:

    document.addEventListener("DOMContentLoaded", () => {
      foo();
      bar();
    });
    

    就像

    window.onload = function(){
      foo();
      bar();
    };
    

    (但是,通常更好地使用 addEventListener )