JavaScript DOM学習ノート2――DOMの基本使用


1.HTMLのDOM
        W 3 CはXML DOMを再開発するとともに、XHTMLやHTMLに対してDOMを開発しました.このDOMはこのような実現の基礎としてHTMLDocumentとHTMlementを定義している.各HTML要素は、対応するHTMLELE mentタイプによって表される.例えばHTMLDivElementは<div>ラベルを表します.
2.関連ノードへのアクセス
        documentオブジェクトはBOMの一部であり、DOMの一部でもある.したがって、DOMの処理は多くの場合、documentオブジェクトで開始されます.コードを直接見てください.ちょっと変わったものは全部注釈で説明しました.
 

  
  
  
  
  1. <html> 
  2.     <head> 
  3.         <title>DOM Example</title> 
  4.         <script type="text/javascript"> 
  5.             function domTest() { 
  6.                 var oHtml = document.documentElement;// HTML <html>  
  7.                 var oHead = oHtml.firstChild; 
  8.                 var oBody = oHtml.lastChild; 
  9.                 //var oHead = oHtml.childNodes[0]; 
  10.                 //var oHead = oHtml.childNodes.item(0); 
  11.                 //var oBody = oHtml.childNodes[1]; 
  12.                 //var oBody = oHtml.childNodes.item(1); 
  13.                 //HTML DOM  body <body>  
  14.                 //var oBody = document.body; 
  15.                 alert(oHtml.childNodes.length); 
  16.                  
  17.                 alert(oHead.parentNode == oHtml); 
  18.                 alert(oBody.parentNode == oHtml); 
  19.                 alert(oBody.previousSibling == oHead); 
  20.                 alert(oHead.nextSibling == oBody); 
  21.                 alert(oHead.ownerDocument == document);//ownerDocument  
  22.  
  23.             } 
  24.         </script> 
  25.     </head> 
  26.     <body onload="domTest()"> 
  27.         <p>Hello,World!</p> 
  28.         <p>Isn't thhis exciting?</p> 
  29.         <p>You are learing to use DOM!</p> 
  30.     </body> 
  31. </html> 
3.DOMノードタイプを検出する
        ノードのタイプは、nodeType属性により検出することができる.前のブログでは、12のノードタイプについて言及し、例を挙げて説明しました.ここでは改めて言及しない.
        検出方法1:Nodeインターフェースで定義されたノードタイプ定数が表す数字を返します.
 

  
  
  
  
  1. alert(document.nodeType);// 9 
  2. alert(document.documentElement.nodeType);// 1 
        検出方法2:Nodeの定数マッチを使用して、ノードタイプを検出する.
 

  
  
  
  
  1. alert(document.nodeType == Node.DOCUMENT_NODE); // true 
  2. alert(document.documentElement.nodeType == Node.ELEMENT_NODE);// true 
       しかし、上記の第二の方法はIE以外のブラウザではほとんど大丈夫です.IEはだめです.私はテストをしました.IE 8を使っても間違えます.この問題を解決するために、ノードタイプの定数をカスタマイズすることができます.コードを参照:
 

  
  
  
  
  1. if(typeof Node == "undefined") { 
  2.     var Node = { 
  3.         ELEMENT_NODE:1, 
  4.         ATTRIBUTE_NODE:2, 
  5.         TEXT_NODE:3, 
  6.         CDATA_SECTION_NODE:4, 
  7.         ENTITY_REFERENCE_NODE:5, 
  8.         ENTITY_NODE:6, 
  9.         PROCESSING_INSTRUCTION_NODE:7, 
  10.         COMMENT_NODE:8, 
  11.         DOCUMENT_NODE:9, 
  12.         DOCUMENT_TYPE_NODE:10, 
  13.         DOCUMENT_FRAGMENT_NODE:11, 
  14.         NOTATION_NODE:12 
  15.     }; 
参考図書目録:
『JavaScript高級プログラミング』Nicolas C.Zakas著、曹力張欣等訳.