节点类型:
元素节点 <div></div>
文本节点 div文本 一般情况下,都是通过元素节点的子节点获取
属性节点 id = 'div1'
【注】既获取文本节点,又获取元素节点。
childNodes
firstChild
lastChild
parentNode 获取当前节点的父节点
previousSibling 获取当前节点的兄弟节点中上一个节点(同级别的上一个元素节点)
nextSibling 获取当前节点的兄弟节点中下一个节点(同级别的下一个元素节点)
IE8以后兼容的方法。
【注】只获取子节点中的元素节点。
firstElementChild 第一个节点
lastElementChild 最后一个节点
nextElementSibling 下一同级节点
previousElementSibling 上一同级节点
children //获取当前元素节点下的所有的子元素节点(不包含文本节点)
代码示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>元素节点属性</title>
<script>
window.onload = function(){
var oDiv = document.getElementById('div');
alert(oDiv.firstChild);// [object Text] 获取的是id为div的div到<em>标签之间的空格,当做文本了
alert(oDiv.lastChild);// [object Text] 获取的是</strong>到</div>之间的空格标签之间的空格,当做文本了
alert(oDiv.childNodes.length);//5(显示5,是因为把空格算进去了) 获取div下所有的子节点
/*空格分别为id为div的div到<em>标签之间的空格、</strong>到</div>之间的空格、然后是两个元素节点em和strong加一个文本节点 “div文本”这几个字一共5个*/
alert(oDiv.parentNode);//[object HTMLBodyElement] 获取的是 body标签对象
alert(oDiv.parentNode.tagName);//BODY 输出的标签名字正好与上面的理论相同
alert(oDiv.childNodes[1].tagName);//EM
alert(oDiv.childNodes[1].previousSibling.nodeName);//#text 这个结果指的是id为div的div到<em>标签之间的空格,当做文本节点了
//alert(oDiv.childNodes[1].nextSibling.nodeName);//#text 这个结果指的是 ‘div文本’ 这几个字。
/*-----------------新增------------------*/
//ie8以后新增方法、只获取元素节点
alert(oDiv.children.length);//2 只获取em标签和strong标签元素节点,忽略文本节点
alert(oDiv.firstElementChild);//[object HTMLElement] 获取当前节点元素下的第一个子元素节点(不包含空白的文本节点)
alert(oDiv.firstElementChild.tagName); //EM 查看此节点的标签名
alert(oDiv.lastElementChild);//[object HTMLElement] 获取当前节点元素下的最后一个子元素节点(不包含空白的文本节点)
alert(oDiv.lastElementChild.tagName); //STRONG 查看此节点的标签名
alert(oDiv.children[0].tagName);//EM
alert(oDiv.children[0].nextElementSibling);//[object HTMLElement] 获取当前节点元素同级的下一个元素节点(不包含空白的文本节点)
alert(oDiv.children[0].nextElementSibling.tagName); //STRONG 查看此节点的标签名
alert(oDiv.children[1].previousElementSibling);//[object HTMLElement] 获取当前节点元素同级的上一个元素节点(不包含空白的文本节点)
alert(oDiv.children[1].previousElementSibling.tagName); //EM 查看此节点的标签名
}
</script>
</head>
<body>
<div id="div">
<em>em</em>
div文本
<strong>strong</strong>
</div>
</body>
</html>
文本通用属性:
/*
节点类型:
元素节点 <div></div>
文本节点 div文本 一般情况下,都是通过元素节点的子节点获取
属性节点 id = 'div1'
元素节点的属性:
node.childNodes 获取当前节点的子节点
node.firstChild 快速获取子节点的首位
node.lastChild 快速获取子节点的最后一位
都有三个属性(见下表)
-------------------------------------------------------------------------
nodeName nodeType nodeValue
-------------------------------------------------------------------------
元素节点 | 标签名 | 1 | null
文本节点 | #text | 3 | 文本内容
属性节点 | 属性名 | 2 | 属性的值
-------------------------------------------------------------------------

*/
代码示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script>
window.onload = function(){
var oDiv = document.getElementById('div1');
// alert(oDiv.childNodes.length);//3
alert(oDiv.childNodes[0]);//[object HTMLElement] em的元素节点
alert(oDiv.childNodes[1]);// [object Text] 文本对象
alert(oDiv.childNodes[2]);//[object HTMLElement] strong的元素节点
alert(oDiv.lastChild.tagName); //STRONG
alert(oDiv.childNodes[0].nodeName);//EM
alert(oDiv.childNodes[0].nodeType);//1
alert(oDiv.childNodes[0].nodeValue);//null
alert(oDiv.childNodes[1].nodeName);//#text
alert(oDiv.childNodes[1].nodeType);//3
alert(oDiv.childNodes[1].nodeValue);//div文本
}
</script>
</head>
<body>
<div id = 'div1'><em>em</em>div文本<strong>strong</strong></div>
</body>
</html>