DOM節點類型詳解


萬維網聯盟(W3C)定義HTML DOM 標准節點有以下幾種 ()

                      類型                           值                    說明  

ELEMENT_NODE  1 元素節點 *
ATTRIBUTE_NODE     2 屬性節點 *
TEXT_NODE   3 文本節點 *
CDATA_SECTION_NODE 4 CDATA 區段  
ENTITY_REFERENCE_NODE 5 實體引用  
ENTITY_NODE 6 實體  
PROCESSING_INSTRUCTION_NODE 7 處理指令  
COMMENT_NODE 8 注釋節點 *
DOCUMENT_NODE 9 文檔節點 *

注: * 表示常用

IE與FF 對 以上節點的 "理解" 有差異,如比我們寫js :  對象.nextSibling   ,  來取得對象的下一個兄弟節點, 在IE中,只會取ELEMENT_NODE (元素節點), 忽略其它類型節點.     FF會取得上面各種類型節點.

如:

Java代碼     收藏代碼
  1. <table>  
  2.   <tr  id="nst"><td></td></tr>(這里有換行,就是一個文本節點)  
  3.   <tr><td></td></tr>  
  4. </table>  
  5. --------------------------------------   
  6. <js>  
  7. var o=$('nst');  
  8. var next=o.nextSibling;  
  9. </js>   
  10. ---------------------------------------   

  結果: IE中:next 是元素節點 (第二個<tr>) FF中:next 是文本節點 (那個換行)

解決辦法: 在base.js中有如下方法:  通過判斷 nodeType == 1  來解決問題

 

// 獲得下一個元素對象(nodeType=1)
function $NE(e)
{
	e = e.nextSibling;
	while (e && e.nodeType != 1){e = e.nextSibling;}
	return e;
}
// 獲得第一個元素對象(nodeType=1)
function $FE(e)
{
	e = e.firstChild;
	while (e && e.nodeType != 1){e = e.nextSibling;}
	return e;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM