JS DOM 编程艺术(第2版)读书笔记 第6章 图片库改进版

把时间处理函数移出文档
向后兼容
确保可访问
支持平稳退化
检测对象和方法是否存在

直接上代码 有详细注释:

复制代码
 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 5 <title>图片库</title>
 6 <style type="text/css">
 7 *{margin:0;padding:0;}
 8 body{background:#CCC;margin:1em 10%;}
 9 img{width:300px;height:300px;display:block;}
10 ul{overflow:hidden;}
11 li{float:left;list-style:none;padding:0 5px;}
12 </style>
13 </head>
14 <body>
15 
16 <h1>photo</h1>
17 <div id="imgBox">
18     <ul>
19         <li><a href="images/Koala.jpg" title="Koala">Koala</a></li>
20         <li><a href="images/Desert.jpg" title="Desert">Desert</a></li>
21         <li><a href="images/Tulips.jpg" title="Tulips">Tulips</a></li>
22         <li><a href="images/Lighthouse.jpg" title="Lighthouse">Lighthouse</a></li>
23     </ul>
24 
25     <img id="placeholder" src="images/Koala.jpg" alt="" />
26 
27     <p id="description">Choose an image.</p>
28 </div>
29 <script type="text/javascript">
30 
31 // window.onload 添加多个事件
32 function addLoadEvent(func) {
33 var oldonload = window.onload;
34 if(typeof oldonload != "function"){
35         window.onload = func;
36     }else{
37         window.onload = function(){
38             oldonload();
39             func();
40         }
41     }
42 }
43 
44 addLoadEvent(prepareGallery);
45 
46 function prepareGallery(){
47     
48 // 检测对象或方法是否存在
49 if(!document.getElementById) return false;
50 if(!document.getElementsByTagName) return false;
51 if(!document.getElementById("imgBox"))return false;
52 var gallery = document.getElementById("imgBox");
53     links = gallery.getElementsByTagName("a");
54 for (var i = 0, l = links.length; i < l; i++) {
55         links[i].onclick = function(){
56 // 巧妙的运用showPic函数的返回值
57 // return showPic(this) ? false : true;
58 return !showPic(this);
59         }
60 //links[i].onkeypress = //links[i].onclick;
61     }
62 }
63 
64 function showPic(obj) {
65 // 对象检测
66 if(!document.getElementById("placeholder")) return false;
67 
68 /* 
69      * 获得当前对象的href值,如安装有本地服务器:
70      * IE6和IE7返回  "http://localhost/images/Koala.jpg"
71      * 标准浏览器返回 "images/Koala.jpg"
72      * 为了然所有浏览器都返回一致的结果,给getAttribute()添加第二个参数为2.
73      * 谨记:getAttribute("href")和getAttribute("href", 2);浏览器兼容性。
74 */
75 var url = obj.getAttribute("href",2);
76 var place = document.getElementById("placeholder");
77     place.setAttribute("src", url);
78 
79 if(document.getElementById("description")){
80 var text = obj.getAttribute("title");
81 var description = document.getElementById("description");
82 // firstChild必须存在,也就是说 <p id="description">这里必须有内容</p> 下面这行代码才有效。 其实这种情况常用 description.innerHTML = text;
83         description.firstChild.nodeValue = text;
84     }
85 return true;
86 }
87 
88 </script>
89 
90 </body>
91 </html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值