书中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>
