childNodes属性
在一个节点树上,childNodes属性可以用来获取任何一个元素的所有子元素,它是一个包含这个元素所有子元素的数组。
用法
element.childNodes
实例
检索body元素的所有子元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Gallery</title>
</head>
<body>
<h1>Gallery</h1>
<ul>
<li>
<a href="images/1.jpg" title="A Fireworks Display">Fireworks</a>
</li>
</ul>
<img id="placeholder" src="images/5.jpg" alt="My Images Gallery">
<script>
window.onload = function bodyChildren() {
var body_element = document.getElementsByTagName("body")[0];
alert(body_element.childNodes.length);
}
</script>
</body>
</html>
返回值是9
TIPS
- childNodes属性返回的数组包含所有类型的节点,而不仅仅是元素节点。
- 访问childNodes数组的第一个元素可以用childNodes[0]表示,也可以用firstChild
- 访问childNodes数组的最后一个元素可以用lastChild
在文档对象模型 (DOM) 中,每个节点都是一个对象。DOM 节点有三个重要的属性 :
- nodeName : 节点的名称
- nodeValue :节点的值
- nodeType :节点的类型
nodeType 属性
nodeType返回的值是一个数字,节点的类型,是只读的。以下常用的几种结点类型:
用法
node.nodeType
TIPS
- 元素节点的nodeType属性值是1
- 属性节点的nodeType属性值是2
- 文本节点的nodeType属性值是3
- 注释节点的nodeType属性值是8
- 文档节点的nodeType属性值是9
nodeName 属性
节点的名称,是只读的。
- 元素节点的 nodeName 与标签名相同
- 属性节点的 nodeName 是属性的名称
- 文本节点的 nodeName 永远是 #text
- 文档节点的 nodeName 永远是 #document
nodeValue 属性
如果想改变一个文本节点的值,那就使用nodeValue 属性,它用来得到或设置一个节点的值
用法
node.nodeValue
- 元素节点的 nodeValue 是 undefined 或 null
- 文本节点的 nodeValue 是文本自身
- 属性节点的 nodeValue 是属性的值
parentNode属性
获取指定节点的父节点
语法
elementNode.parentNode
TIPS
父节点只能有一个
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>parentNode()属性</title>
</head>
<body>
<div id="text">
<p id="con"> parentNode 获取指点节点的父节点</p>
</div>
<script type="text/javascript">
var mynode= document.getElementById("con");
document.write(mynode.parentNode.nodeName);
</script>
</body>
</html>
elementNode.parentNode.parentNode //访问祖节点
访问兄弟节点
nextSibling 属性可返回某个节点之后紧跟的节点(处于同一树层级中)。
语法
nodeObject.nextSibling
TIPS
如果无此节点,则该属性返回 null。
previousSibling 属性可返回某个节点之前紧跟的节点(处于同一树层级中)。
语法
nodeObject.previousSibling
TIPS
如果无此节点,则该属性返回 null。
注意
两个属性获取的是节点。Internet Explorer 会忽略节点间生成的空白文本节点(例如,换行符号),而其它浏览器不会忽略。
解决方法
判断节点nodeType是否为1, 如是为元素节点,跳过。
发表评论