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は正確には配列になっています。