Javascript Dom 编程艺术

本文介绍了一个简单的图片画廊实现方案,通过HTML、CSS和JavaScript来创建一个动态的图片展示效果。用户可以点击缩略图来更换主展示区的图片,并且会同步更改图片描述。
<pre name="code" class="html">body{
    font-family:"Helvetica","Arial",sans-serif;
    color:#333;
    background-color:#ccc;
    margin:1em 10%;
}
h1{
    color:#333;
    background-color:transparent;

}
a{
    color:#c60;
    background-color:transparent;
    font-weight:bold;
    text-decoration:none;
}
ul{
    padding:0;
}
li{
    float:left;
    padding:1em;
    list-style:none;
}
#imagegallery{
    list-style:none;
}
#imagegallery{
   display:inline;
}
#imagegallery li a img{
    border:0;
}

function addLoadEvent(func){ var oldonload=window.onload; if(typeof window.onload!='function') window.onload=func; else {window.onload=function(){ oldonload(); func();} }}function insertAfter(newElement,targetElement){ var parent=targetElement.parentNode; if(parent.lastChild==targetElement)parent.appendChild(newElement); elseparent.insertBefore(newElement,targetElement.nextSibling); //还有一个previousSibling可以用呢}function preparePlaceholder(){ 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"); placeholder.setAttribute("id","placeholder"); placeholder.setAttribute("src","images/1.jpg"); placeholder.setAttribute("alt","我仅仅只是个占位的"); var description=document.createElement("p"); description.setAttribute("id","description"); var desctext=document.createTextNode("choose an image"); description.appendChild(desctext); //document.getElementsByTagName("body")[0].appendChild(placeholder); //document.getElementsByTagName("body")[0].appendChild(description); var gallery=document.getElementById("imagegallery"); insertAfter(placeholder,gallery); insertAfter(description,placeholder); if(!document.getElementById("description")) return false; console.log("成功创建description");} function prepareGallery(){ if(!document.getElementsByTagName||!document.getElementById) return false; if(!document.getElementById("imagegallery")) return false; var gallery=document.getElementById("imagegallery"); var links=gallery.getElementsByTagName("a"); for(var i=0;i<links.length;i++) {links[i].onclick=function(){ return showPic(this); } //links[i].onkeypress=links[i].onclick; } console.log("prepareGallery");}function showPic(whichpic){ if(!document.getElementById("placeholder")) return true; if(!document.getElementById("description")) return false; console.log("我敢保证这里不会出来1"); var source = whichpic.getAttribute("href"); var placeholder = document.getElementById("placeholder"); if(placeholder.nodeName!="IMG") return true;//IMG什么鬼 placeholder.setAttribute("src",source); var text=whichpic.getAttribute("title")?whichpic.getAttribute("title"):""; var description=document.getElementById("description"); if(description.firstChild.nodeType==3){ //description.childNodes[0].nodeValue=text; //这一句和下一句完全等价 description.firstChild.nodeValue=text;} return false;}addLoadEvent(preparePlaceholder);addLoadEvent(prepareGallery);

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="content-type" content="text/html";charset="utf-8"/>
    <title>Image Gallery</title>
    <script type="text/javascript" src="scripts/showPic.js"></script>
    <link rel="stylesheet" href="styles/layout.css" type="text/css" media="screen"/>
 
</head>
<body>
    <h1>Snapshot</h1>
    <ul id="imagegallery">
	<li>
	    <a href="images/1.jpg" title="测试">
	        <img src="images/thumbnail_1.jpg" alt="0.0"/>
	    </a>
	</li>
	<li>
	    <a href="images/5.png" title="an icon"  >
		<img src="images/thumbnail_5.jpg" alt="0.0"/>
	    </a>
	</li>
	<li>
	    <a href="images/lena.bmp" title="bmp"  >
		<img src="images/thumbnail_lena.jpg" alt="0.0"/>
	    </a>
	</li>
	<li>
	    <a href="images/ceshi.jpg" title="人"  >
		<img src="images/thumbnail_ceshi.jpg" alt="0.0"/>
	    </a>
	</li>
    </ul> 
 
</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值