DOM(Document Object Model)は、ウェブページの構造を表すオブジェクトモデルであり、JavaScriptを使用してウェブページのコンテンツを動的に操作するための基本的な仕組みです。DOMは、HTMLやXML文書の各要素をオブジェクトとして扱い、JavaScriptを用いてそれらの要素にアクセス、操作、変更を行うことを可能にします。このエッセイでは、DOMの特性、JavaScriptで使用する主要なプロパティである「タグ名」「クラス」「コンテンツ」について詳しく探求します。
DOMの基本概念
DOMは、HTMLやXMLドキュメントをツリー構造で表現します。各ノード(要素)はツリーの一部として位置付けられ、ノード間の関係は親子関係や兄弟関係によって定義されます。これにより、JavaScriptはページ上の任意の要素を対象に、動的な変更やインタラクションを可能にします。

DOMでは、HTML要素(タグ)は「要素ノード」として表現され、テキストやコメントなどもそれぞれ「テキストノード」や「コメントノード」として区別されます。要素ノードには、タグ名、属性、そしてその内部に含まれるコンテンツ(テキストやその他の要素)が含まれます。
タグ名(タグ名のプロパティ)
DOMでタグ名を取得するには、JavaScriptのtagName
プロパティを使用します。これは、指定された要素がどのHTMLタグであるかを文字列として返します。
javascriptlet element = document.getElementById('example');
console.log(element.tagName); // 出力例: "DIV"
上記の例では、getElementById
メソッドで取得した要素のタグ名がtagName
プロパティを使って取得されます。tagName
プロパティは、要素がHTMLタグとして定義されたものを返すため、例えば
,
,
など、要素の種類を確認する際に役立ちます。
tagName
の返り値は常に大文字で返される点に注意が必要です。例えば、
タグのtagName
プロパティは「DIV」になります。これを使って、特定の種類の要素に対して条件分岐を行うことができます。
クラス(class属性)
DOMでは、HTML要素に指定されたclass
属性を操作するためのプロパティが用意されています。className
プロパティを使用すると、要素に付与されたクラス名を取得したり、変更したりすることができます。
javascriptlet element = document.getElementById('example');
console.log(element.className); // 出力例: "example-class"
このコードでは、id="example"
の要素に付けられたクラス名が表示されます。もし複数のクラスが設定されている場合は、スペース区切りで複数のクラス名が返されます。
html<div id="example" class="class1 class2">Contentdiv>
javascriptlet element = document.getElementById('example');
console.log(element.className); // 出力例: "class1 class2"
また、classList
プロパティを使用すると、より細かい操作が可能になります。classList
を使うと、クラスの追加、削除、切り替えなどが簡単に行えます。
javascriptlet element = document.getElementById('example');
element.classList.add('new-class'); // 新しいクラスを追加
element.classList.remove('class1'); // クラスを削除
element.classList.toggle('active'); // クラスを切り替え
コンテンツ(textContentとinnerHTML)
DOMでは、要素の内部に含まれるコンテンツを操作するためのプロパティとして、textContent
とinnerHTML
が提供されています。
- textContent
textContent
は、要素内のテキストコンテンツを取得または設定するためのプロパティです。textContent
を使用すると、HTMLタグを無視して、純粋なテキストだけを取得または設定することができます。
javascriptlet element = document.getElementById('example');
console.log(element.textContent); // 出力例: "This is some text"
textContent
に新しいテキストを設定すると、HTML要素内のテキスト部分が変更されます。例えば、ボタンのラベルを変更する場合に使用できます。
javascriptlet button = document.getElementById('myButton');
button.textContent = 'Click Me!';
- innerHTML
innerHTML
は、要素内のHTMLコンテンツを取得または設定するためのプロパティです。これを使用すると、要素内のHTMLタグを含むすべてのコンテンツを操作することができます。
javascriptlet element = document.getElementById('example');
console.log(element.innerHTML); // 出力例: "This is a bold text.
"
innerHTML
を設定することで、HTML構造を含む新しいコンテンツを挿入することができますが、セキュリティ上の理由から、ユーザー入力をそのままinnerHTML
に挿入するのは避けるべきです。クロスサイトスクリプティング(XSS)攻撃を防ぐために、常に信頼できるデータのみを操作するようにしましょう。
javascriptlet element = document.getElementById('example');
element.innerHTML = 'This is a new paragraph.
';
その他の重要なプロパティ
-
id: 要素の
id
属性を取得または設定します。javascriptlet element = document.getElementById('example'); console.log(element.id); // 出力例: "example"
-
style: 要素のインラインスタイルを操作するためのプロパティです。CSSスタイルをJavaScriptから直接設定することができます。
javascriptlet element = document.getElementById('example'); element.style.backgroundColor = 'blue'; // 背景色を青に変更
結論
DOMは、ウェブページの要素を動的に操作するために欠かせない仕組みであり、JavaScriptを使用することで、ページの構造を変更したり、インタラクティブな動作を実現したりすることができます。タグ名、クラス、コンテンツなどの基本的なプロパティを理解し、効果的に利用することで、ウェブ開発における操作をより柔軟に、そして効率的に行うことができるようになります。
これらのDOMプロパティを駆使して、インタラクティブで動的なウェブアプリケーションを作成することができます。また、セキュリティを考慮して、ユーザー入力やHTMLコンテンツの操作を適切に行うことも重要です。