JavaScript DOM编程艺术第四章 — JavaScript图片库案例研究

这一章通过JavaScript图片库案例,学习了一些DOM属性。

HTML代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>图片库</title> <link href="http://www.likecs.com/styles/layout.css" media="screen" /> </head> <script type="text/javascript" src="http://www.likecs.com/scripts/showPic.js"></script> <body> <h1>Snapshots</h1> <ul> <li> <a href='http://www.likecs.com/images/1.jpg' title="黄昏海边">黄昏海边</a> </li> <li> <a href='http://www.likecs.com/images/2.jpg' title="大漠孤烟直">沙漠</a> </li> <li> <a href='http://www.likecs.com/images/3.jpg' title="湖泊">湖泊</a> </li> <li> <a href='http://www.likecs.com/images/4.jpg' title="可爱熊熊">可爱壁纸</a> </li> <li> <a href='http://www.likecs.com/images/5.jpg' title="哆啦A梦">哆啦A梦</a> </li> </ul> <img src="http://www.likecs.com/images/gallery.png" alt="my image gallery" /> <p>Choose an image.</p> </body> </html> 几个DOM属性 1. childNodes属性

用来获取任何一个元素的所有子元素

使用方式:element.childNodes

返回值:这个元素的所有子元素数组。包含所有类型的节点:元素节点、文本节点和属性节点。(实际上,文档里几乎每个东西都是一个节点,甚至连空格和换行符都是节点)

-- 示例:输出body元素的全体子元素

function countBodyChildren() { let body_element = document.getElementsByTagName('body')[0]; console.log(body_element.childNodes); }

-- 输出:

image

如图可见,body元素的子元素有9个,除了h1元素、ul元素、p元素、img元素四个外,还包括5个文本节点。

-- 文本节点示例:

image

2. nodeType属性

获取每个节点的type(元素节点、文本节点还是属性节点)

元素节点的nodeType属性值:1

属性节点的nodeType属性值:2

文本节点的nodeType属性值:3

使用方式:node.nodeType

-- 示例:

let body_element = document.getElementsByTagName('body')[0]; alert(body_element.nodeType);

-- 输出:1

3. nodeValue属性

获取 or 设置节点的值

获取节点的值使用方式:node.nodeValue

设置节点的值使用方式:node.nodeValue = xxx

注意,元素节点的nodeValue值是null。如果想获取p元素所包含的文本值,则需要获取元素所包含的文本值,则需要获取p元素的第一个子节点

-- 示例:输出 p元素的nodeValue 和 p的childNodes 以及 第一个子节点的nodeValue

function countBodyChildren() { let description = document.getElementsById('description'); console.log(description.nodeValue); console.log(description.childNodes); console.log(description.childNodes[0].nodeValue); }

--- 输出:

image

-- 示例:将p元素nodeValue值设置为'hello world'

function countBodyChildren() { let description = document.getElementById('description'); description.childNodes[0].nodeValue = 'hello world'; console.log(description.childNodes[0].nodeValue); }

--- 输出:

image

4. firstChild和lastChild属性

指childNodes的第一个元素和最后一个元素,相当于简写,如下:

node.firstChild ——> node.childNodes[0]

node.lastChild ——> node.childNodes[node.childNodes.length - 1]

完整代码 1. HTML见上 2. JavaScript function showPic(whichPic) { let source = whichPic.getAttribute('href'); let placeholder = document.getElementById('placeholder'); placeholder.setAttribute('src', source); let title = whichPic.getAttribute('title'); let description = document.getElementById('description'); description.firstChild.nodeValue = title; } 3. CSS body { font-family: 'Helvetica', 'Arial', 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; } img { width: 80%; display: block; clear: both; }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwffxw.html