《DOM Scripting》学习笔记-——第四章 案列分析 JS美术馆(点击链接到图片)

实现效果:点击图片链接,可以在当前网页显示图片,并且显示图片标题。

Html代码

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
 2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 4 <head>
 5 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
 6 <title>Image Gallery</title>
 7 </head>
 8 <body>
 9   <h1>Snapshots</h1>
10   <ul>
11     <li><a href="images/fireworks.jpg" onclick="showPic(this);return false" title="A fireworks display"> Fireworks</a></li>
12     <li><a href="images/coffee.jpg" onclick="showPic(this);return false" title="A cup of black coffee">Coffee</a></li>
13     <li><a href="images/rose.jpg" onclick="showPic(this);return false" title="A red, red rose">Rose</a></li>
14     <li><a href="images/bigben.jpg" onclick="showPic(this);return false" title="The famous clock"> Big Ben</a></li>
15   </ul>
16   <img id="placeholder" src="images/placeholder.gif"alt="my image gallery" />
17   <p id="description">Choose an image.</p>
18 </body>
19 </html>

思路:

1、为每张图片分别创建一个网页,如果都放在一个网页里,数据量大,下载速度会变慢。

2、当点击某个连接时,可以留在这个网页而非转到另一个窗口。并且可以看到原有的图片清单。

3、为了实现第二条效果,需要增加一个“占位符”图片。“占位符”在这个主页上为图片预留一个浏览区域。在点击某个链接时,要拦截其默认行为。在点击某个链接时,把“占位符”图片替换为与那个连接相对应的图片。

js代码:

1 function showPic(whichpic) {
2   var source = whichpic.getAttribute("href");
3   var placeholder = document.getElementById("placeholder");
4     placeholder.setAttribute("src",source);
5   var text = whichpic.getAttribute("title");
6   var description = document.getElementById("description");
7     description.firstChild.nodeValue = text;
8 }

1、  此方法的两个参数:(1)打算对之进行设置的属性(src)。(2)这个属性的新属性值(保存在source中)。

2、  Whichpic代表了一个元素节点。即某个图片的<a>元素。

3、  为什么不用placeholder.src=source(老方法).setAttribute()方法是“第一级DOM”的组成部分之一,这个方法可以对任意元素节点的任意属性进行设置,并且可移植性好,老方法只适用于web文档,DOM适用于任何一种标记语言。(DOM是一种适用于多种环境和多种程序设计语言的通用型API).

4、  对js函数进行功能扩展,使得在点击相应的图片链接时,图片对应的文本也可以改变。同样,设置含有两个参数的函数(1)打算对之进行设置的属性(p的文本节点的内容)。(2)这个属性的新属性值(保存在text中)。用到的属性:childNodes;nodeType;nodeValue;firstChild;lastChild。

  

原文地址:https://www.cnblogs.com/yangfang228/p/6017618.html