1、遍歷DOM節點javascript
遍歷DOM節點經常使用通常用節點的 childNodes, firstChild, lastChild, nodeType, nodeName, nodeValue屬性。在獲取節點nodeValue時要注意,元素節點的子文本節點的nodeValue纔是元素節點中文本的內容。html
2、遍歷節點屬性java
Element類型是使用attributes屬性的惟一一個DOM節點類型。attributes屬性中包含一個NamedNodeMap(節點屬性列表)。NamedNodeMap對象擁有下列方法:node
getNamedItem(name):返回nodeName屬性等於name的節點。函數
setNamedItem(node):向列表中添加節點,以節點的nodeName屬性爲索引。ui
removeNamedItem(name):從列表中移除nodeName屬性等於name的節點。spa
item(pos):返回位於數字pos位置的節點。code
attributes屬性中包含一系列節點,每一個節點的nodeName就是特性的名稱,而節點的nodeValue特性的值。htm
var
id = element.attributes.getNamedItem(
'id'
).nodeValue;
//下面代碼在IE中會列出節點全部屬性,而在Firefox,Chrome中只列出顯示聲明的屬性
var
attrMap = element.attributes;
for
(
var
i = 0; i < attrMap.length; i++){
console.log(attrMap[i].nodeName +
' : '
+ attrMap[i].nodeValue);
}
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Dom遍歷</title>
</head>
<body>
<div id="frm">
用戶名:<input type="text" name="username" id="uname"/>
</div>
</body>
</html>
<script type="text/javascript">
<!--
//當窗體加載完畢後觸發此函數
window.onload = function(){
//document 獲取根元素
var root = document.documentElement;
//遍歷所喲的節點
traverseNodes(root);
document.write(msg);
}
function traverseNodes(node){
//判斷是不是元素節點
if(node.nodeType == 1){
display(node);
//判斷是否有屬性節點
/* for(var i=0;i<node.attributes.length;i++){
//獲得屬性節點
var attr = node.attributes.item(i);
//判斷該節點是否存在
if(attr.specified){
//若是存在 顯示輸出
display(attr);
}
} */
//判斷該元素節點是否有子節點
if(node.hasChildNodes){
//獲得全部的子節點
var sonnodes = node.childNodes;
//遍歷所喲的子節點
for (var i = 0; i < sonnodes.length; i++) {
//獲得具體的某個子節點
var sonnode = sonnodes.item(i);
//遞歸遍歷
traverseNodes(sonnode);
}
}
}else{
display(node);
}
}
var msg = "";
var num=0;
function display(node){
msg+=(++num)+" nodeName="+node.nodeName+" nodeValue="+node.nodeValue+" nodeType="+node.nodeType+"<br/>";
}
//-->
</script> 對象