読者です 読者をやめる 読者になる 読者になる

HTMLとJavascriptによるDOMの基本的な考え方

DOMとは、

HTMLで表現された文書は、とある構造になります。
そしてその一つ一つの要素をDOM、その全体の構造をDOMツリーと呼びます。

例えば、以下のようなHTMLがあったとしましょう。

<html>
  <head>
  </head>
  <body>
    <div class="main">
      <div class="header">
        <h1>sample</h1>
        <div id="description">
          this is a sample html document.
        </div>
      </div>

      <div class="articles">
        <h2 class="article_title">article1 title</h2>
        <div class="article_body">
          article text
          <img src="hoge.jpg">
        </div>
        <div class="article_comment">
          comment for article1
        </div>
        
        <h2 class="article_title">article2 title</h2>
        <div class="article_body">
          article text
        </div>
        <div class="article_comment">
          comment for article2!
        </div>
        <div class="article_comment">
          comment for article2!!
        </div>
      </div>
      
      <div class="footer">
        <p id="copyright>
          (c)hoge
        </p>
      </div>
    </div>
  </body>
</html>

このDOMツリーは、、、

document
  |
  |-div.main
     |
     |-div.header
     |  |
     |  |-h1
     |  |
     |  |-div#description
     |
     |-div.articles
     |  |
     |  |-h2.article_title
     |  |
     |  |-div.article_body
     |  |  |-img
     |  |
     |  |-div.article_comment
     |  |
     |  |-h2.article_title
     |  |
     |  |-div.article_body
     |  |
     |  |-div.article_comment
     |  |
     |  |-div.article_comment
     |
     |-div.footer
        |
        |-p#copyright

こんな形になります。

では、これをどう使うのか。
例えば、このdocumentから(DOMツリー)から、id="description"の要素をとってきたい、となったら、

var description = document.getElementById("description")

と書きます。

DOMの考え方の中では、idはdocumentの中で唯一(uniq)なものと定義されているため、1つの要素だけがとられてきます。

では、
例えば、このdocumentから、class="article_comment"の要素をとってきたい、となったらどうなるのか?

var comments = document.getElementsByClassName("article_comment")

と書きます。

DOMの考え方の中では、classはdocumentの中で繰り返し使えるものになります。
よって、class名で要素をとってきた場合に、変数commentsは正確には配列になっています。