suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript - window.onload wird überschrieben, wie kann ich das Problem lösen?

window.onload = function(){  
    var para =document.createElement("p");  
    var info = "NodeName:";  
    info += para.nodeName;  
    info += "     NodeType:";  
    info += para.nodeType;  
    alert(info);  
}  
  
  
window.onload = function(){  
    var para = document.getElementById("testid");  
    var e = document.createElement("p");  
    var txt = document.createTextNode("hello zmz");  
    para.appendChild(e);  
    e.appendChild(txt);  
  
  
}  

Nur das zweite window.onload wird ausgeführt, aber ich möchte, dass beide window.onload ausgeführt werden. Was zu tun?

滿天的星座滿天的星座2802 Tage vor860

Antworte allen(4)Ich werde antworten

  • 给我你的怀抱

    给我你的怀抱2017-06-26 10:57:24

    我们都知道onload事件只能执行一次,所以假设你要运行两个onload时候执行的函数,最后只能执行后一个onload事件的函数,那么我们如何执行多个onload事件的函数呢,
    形式如下:

    window.onload = function(){
    num1();
    num2();
    }

    所以,我们就顶一个函数addLoadEvent(func),它只接受参数,就是在页面加载完毕时执行的函数的名字

    function addLoadEvent(func){  
        var oldonload = window.onload; //把现在有window.onload事件处理函数的值存入变量oldonload。  
        if(typeof window.onload != 'function'){ //如果这个处理函数还没有绑定任何函数,就像平时那样把新函数添加给它  
            window.onload = func;  
        }else{ //如果在这个处理函数上已经绑定了一些函数。就把新函数追加到现有指令的末尾  
            window.onload = function(){  
                oldonload();  
                func();  
            }  
        }  
      
    }  

    调用:

    addLoadEvent(num1);
    addLoadEvent(num2);

    Antwort
    0
  • 漂亮男人

    漂亮男人2017-06-26 10:57:24

    window.addEventListener('load',function(e){state1},false);
    window.addEventListener('load',function(e){state2},false);
    不建议用onload

    Antwort
    0
  • 仅有的幸福

    仅有的幸福2017-06-26 10:57:24

    建议 一个页面就一个window.onload

    window.onload = function(){  
        var para =document.createElement("p");  
        var info = "NodeName:";  
        info += para.nodeName;  
        info += "     NodeType:";  
        info += para.nodeType;  
        alert(info);  
        
        
        var para = document.getElementById("testid");  
        var e = document.createElement("p");  
        var txt = document.createTextNode("hello zmz");  
        para.appendChild(e);  
        e.appendChild(txt);  
    }  

    如果怕命名冲突,可用封闭空间

    window.onload = function(){  
    
        (function(){
            var para =document.createElement("p");  
            var info = "NodeName:";  
            info += para.nodeName;  
            info += "     NodeType:";  
            info += para.nodeType;  
            alert(info);  
        })();
        
        (function(){
            var para = document.getElementById("testid");  
            var e = document.createElement("p");  
            var txt = document.createTextNode("hello zmz");  
            para.appendChild(e);  
            e.appendChild(txt);  
        })();
    }  

    Antwort
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-26 10:57:24

    方法1

    function fn1(){
        var para =document.createElement("p");  
        var info = "NodeName:";  
        info += para.nodeName;  
        info += "     NodeType:";  
        info += para.nodeType;  
        alert(info); 
    }
    function fn2(){
        var para = document.getElementById("testid");  
        var e = document.createElement("p");  
        var txt = document.createTextNode("hello zmz");  
        para.appendChild(e);  
        e.appendChild(txt); 
    }
    window.onload = function(){
        fn1();
        fn2();
    } 
    

    方法2是用楼上的方法。

    window.addEventListener('load',function(e){fn1();},false);
    window.addEventListener('load',function(e){fn2();},false);

    Antwort
    0
  • StornierenAntwort