当前位置 : 主页 > 网络编程 > JavaScript >

学习JavaScript+DOM编程时与到addLoadEvent问题

来源:互联网 收集:自由互联 发布时间:2021-07-03
书中addLoadEvent对于在加载完HTML文档创建DOM树后绑定两个函数,只有最后一个起作用;改为直接用window.onload绑定两个函数无此问题,暂时没有弄清除原因,望知道的大神指点迷津,谢谢
书中addLoadEvent对于在加载完HTML文档创建DOM树后绑定两个函数,只有最后一个起作用;改为直接用window.onload绑定两个函数无此问题,暂时没有弄清除原因,望知道的大神指点迷津,谢谢!
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>imgegallery</title>
    <style type="text/css">
        *{margin: 0;padding: 0;}
        body{font-family: "微软雅黑","Arial",sans-serif;color: #222;background: #ccc;margin: 1em 10%; }
        h1{color: #333;background: transparent;}
        a{color: #333; background: transparent;font-weight: bold;text-decoration: none;}
        ul{padding: 0; overflow: hidden;}
        li{float: left;padding: 1em;list-style: none;}
        img{clear: both;}
    </style>
    <script type="text/javascript">
        function insertAfter(newElement,targetElement){
            var parente = targetElement.parentNode;
            if(parente.lastChild == targetElement){
                parente.appendChild(newElement);
            }else{
                parente.insertBefore(newElement,targetElement.nextSibling);
            }
        }
        function prepareNode(){
            console.log("prepare Node????");
            if(!document.createElement) return false;
            if(!document.createTextNode) return false;
            if(!document.getElementById) return false;
            if(!document.getElementById("imagegallery")) return false;
            var placeholder = document.createElement("img");
            var descrpt = document.createElement("p");
            var text11 = document.createTextNode("Choose an image");
            var gallery = document.getElementById("imagegallery");
            placeholder.setAttribute("id","myphoto");
            placeholder.setAttribute("src", "imge/car.jpg");
            placeholder.setAttribute("alt", "the first");
            placeholder.setAttribute("width", "400px");
            placeholder.setAttribute("height", "300px");
            descrpt.setAttribute("id", "description");
            descrpt.appendChild(text11);
            /*document.getElementsByTagName("body")[0].appendChild(placeholder);
            document.getElementsByTagName("body")[0].appendChild(descrpt); 这种方法插入的元素永远在body的最后面*/
            insertAfter(placeholder,gallery);
            insertAfter(descrpt,placeholder);
            console.log("create element!!!");
        }
        function showPic(whichPic){
            var source = whichPic.getAttribute("href");
            var placeholder = document.getElementById("myphoto");
            var text = whichPic.getAttribute("title") ? whichPic.getAttribute("title"): "";
            var description = document.getElementById("description");
            if(!document.getElementById("myphoto")){
                return true;
            }
            placeholder.setAttribute("src",source);
            if(!document.getElementById("description")){
                return false;
            }
            description.firstChild.nodeValue = text;
            return false;
        }
        function prepareShow(){
            console.log("enter prepare show!!!");
            if(!document.getElementsByName){
                return false;
            }
            if(!document.getElementById){
                return false;
            }
            if(!document.getElementById("imagegallery")){
                return false;
            }
            var galleray = document.getElementById("imagegallery");
            var links = galleray.getElementsByTagName("a");
            for(var i = 0, length = links.length;i<length;i++){
                links[i].onclick = function(){
                   return showPic(this);
                }
            }
        }
        function addLoadEvent(func){//此函数添加addLoadEvent(prepareNode); addLoadEvent(prepareShow);前面的会被覆盖
            var oldonload = window.onload;
            if(typeof window.onload != 'function'){
                console.log(typeof window.onload);
                window.onload = func;
            }else{
                window.onload = function(){
                    oldonload;
                    func();
                }
            }
        }
        //addLoadEvent(prepareNode); addLoadEvent(prepareShow);
        window.onload = function(){
            prepareNode();
            prepareShow();
        }
    </script>
</head>
<body>
    <h1>snapshot</h1>
    <ul id="imagegallery">
        <li>
            <a href="imge/city.jpg" title="a beautifull city"> <!--onclick="showPic(this);return false"-->城市风景</a>
        </li>
        <li>
            <a href="imge/food.jpg" title="lots of food" ><!--onclick="showPic(this);return false"-->两个盘子的食物</a>
        </li>
        <li>
            <a href="imge/person.jpg" title="the man is not"> <!--onclick="showPic(this);return false"-->动漫人物</a>
        </li>
        <li>
            <a href="imge/woman.jpg" title="a beautifull woman" ><!--onclick="showPic(this);return false"-->一个漂亮的女人</a>
        </li>
    </ul>
</body>
</html>

网友评论