childNodes子節點只算第一層,就算一個節點里面再包含一個節點也只視為一個節點。
childNodes會算上文本節點
不管文本還是元素都有nodeType屬性。
nodeType==3 是文本節點
nodeType==1 是元素節點
如果想獲取UL(父節點)下的LI(子節點)是怎樣獲取呢?用childNode來獲取,由於childNodes在高版本的瀏覽器不兼容所以要用nodeType來解決。
1 <ul id="ul"> 2 <li></li> 3 <li></li> 4 <li></li> 5 </ul>
<script> window.onload=function() { oUl.document.getElementById('ul'); for(var i=0;i<oUl.childNodes.length;i++) { if(oUl.childNodes[i]==1){ //元素節點 oUl.childNodes.style.background='red'; } }; }; </script>
children可以代替childNodes,children不包括文本節點,children還是兼容瀏覽器的
1 <script> 2 window.onload=function() 3 { 4 var oUl=document.getElementById('ul'); 5 for(var i=0;i<oUl.children.length;i++) 6 { 7 oUl.children[i].style.background='red'; 8 }; 9 }; 10 </script>
IE6-8 IE9-10 Chrome FireFox
firstChild 第一個節點 firstElementChild 第一個節點
lastChild最后一個節點、 lastElementChild 最后一個節點
nextSibling 下一同級節點 nextElementtSibling 下一同級節點
previousSibling 上一同級節點 previousElementSibling 上一同級節點
1 <script> 2 window.onload=function() 3 { 4 var oUl=document.getElementById('ul'); 5 if(oUl.firstElementChild){ 6 oUl.firstElementChild.style.background='red'; //IE9-10 Chrome FireFox 7 } 8 else{ 9 oUl.firstChild.style.background='red'; //IE6-8 10 } 11 }; 12 </script>
用DOM方式獲取、設置元素屬性
getAttribute(名稱)
setAttribute(名稱,值)
removeAttribute(名稱)
封裝class選取元素
1 <script> 2 function getClass(oParent,sClass) 3 { 4 var aResult=[]; 5 var aELe=document.getElementsByTagName('oParent'); 6 7 for(var i=0;i<aEle.length;I++) 8 { 9 if(aEle[i].classNmae==sClass){ 10 aResult.push(ale[i]); 11 } 12 }; 13 return aResult; 14 }; 15 </script>
調用
var box=getClass(oUl,'box');