DOM(Document Object Model)は、HTMLやXMLドキュメントの構造をプログラム的に操作するためのインターフェースです。DOMを利用することで、ウェブページの要素(ノード)を動的に変更したり、操作したりすることができます。この記事では、DOMの特性や、DOMツリー内の要素に対してどのように「特性(プロパティ)」「クラス(クラス名)」「スタイル」を変更するかについて、包括的に解説します。
DOMツリーとその基本
DOMツリーは、HTMLやXMLドキュメントをノードの階層構造として表現したものです。各ノードは文書の要素、属性、テキスト内容などに対応します。例えば、HTMLで記述されたページは次のようにDOMツリーとして表されます。
htmlhtml>
<html>
<head>
<title>ページタイトルtitle>
head>
<body>
<h1>ウェブページのヘッダーh1>
<p>これは段落です。p>
body>
html>
この例では、がツリーのルートノードで、、、
、
などが子ノードに相当します。これらのノードはJavaScriptを使って操作できます。
1. DOMのプロパティの変更
DOMのプロパティは、HTML要素の属性やその内容を管理するためのものです。これらのプロパティを変更することで、ウェブページの内容や構造を動的に変更することができます。
1.1 innerHTML プロパティ
innerHTMLは、要素の内部のHTMLコードを取得したり、設定したりするためのプロパティです。このプロパティを使うことで、要素の内容を動的に変更できます。
javascriptdocument.getElementById("myElement").innerHTML = "新しいコンテンツ";
1.2 textContent プロパティ
textContentは、要素内のテキストコンテンツを操作するためのプロパティです。innerHTMLとは異なり、textContentはHTMLタグを含まず、純粋なテキストのみを操作します。
javascriptdocument.getElementById("myElement").textContent = "テキスト内容が変更されました";
1.3 value プロパティ
フォーム要素(例えばや)には、valueプロパティを使って入力された値を取得したり設定したりできます。
javascriptvar inputValue = document.getElementById("myInput").value;
document.getElementById("myInput").value = "新しい値";
2. クラスの変更
HTML要素にはclass属性があり、この属性を使ってCSSスタイルを適用します。JavaScriptを使用することで、要素のクラスを動的に変更したり、追加したり削除したりすることができます。
2.1 classListプロパティ
classListプロパティを使用すると、要素のクラスを簡単に操作できます。例えば、add、remove、toggleメソッドを使ってクラスを追加、削除、切り替えることができます。
javascriptvar element = document.getElementById("myElement");
element.classList.add("newClass"); // クラスを追加
element.classList.remove("oldClass"); // クラスを削除
element.classList.toggle("active"); // クラスが存在すれば削除し、存在しなければ追加
2.2 className プロパティ
classNameは、要素のclass属性を文字列として操作する方法です。このプロパティを使うことで、クラス名を一括で設定できますが、classListに比べて少し冗長になります。
javascriptdocument.getElementById("myElement").className = "newClass";
3. スタイルの変更
DOMを操作することで、要素のスタイルを直接変更することも可能です。これを行うには、styleプロパティを使います。このプロパティは、インラインスタイルを変更するためのものです。
3.1 style プロパティ
styleプロパティを使うことで、特定のCSSプロパティを直接変更できます。
javascriptdocument.getElementById("myElement").style.backgroundColor = "blue"; // 背景色を変更
document.getElementById("myElement").style.fontSize = "20px"; // フォントサイズを変更
3.2 複数のスタイルを変更
複数のスタイルを一度に変更したい場合は、style.cssTextを使って一括で設定することができます。
javascriptdocument.getElementById("myElement").style.cssText = "color: red; font-size: 18px; background-color: yellow;";
3.3 setAttribute メソッド
style属性以外のCSSプロパティを変更したい場合や、インラインスタイルでなくCSSファイルで管理されているスタイルを変更したい場合は、setAttributeメソッドを使います。
javascriptdocument.getElementById("myElement").setAttribute("style", "color: red;");
4. 要素の動的操作
DOMツリーの要素は、JavaScriptを使って動的に操作することが可能です。これには要素の追加や削除も含まれます。
4.1 新しい要素を追加する
createElementメソッドを使って新しい要素を作成し、appendChildメソッドで親要素に追加することができます。
javascriptvar newElement = document.createElement("div");
newElement.textContent = "新しい要素";
document.body.appendChild(newElement); // ボディタグの最後に追加
4.2 既存の要素を削除する
removeChildメソッドを使うことで、親要素から指定した子要素を削除できます。
javascriptvar element = document.getElementById("myElement");
element.parentNode.removeChild(element); // 親要素から削除
4.3 要素の属性を変更する
setAttributeメソッドを使って、要素の属性(例えばhrefやsrc)を動的に変更することができます。
javascriptdocument.getElementById("myLink").setAttribute("href", "https://www.example.com");
まとめ
DOMを操作することで、ウェブページの要素のプロパティ、クラス、スタイルを動的に変更することができます。これにより、ユーザーインタラクションに応じた動的なウェブページを作成することが可能になります。JavaScriptを駆使することで、より豊かなウェブ体験を提供することができ、ウェブ開発における重要な技術となります。
DOMの操作は、基本的な知識を押さえた上で、実際にコードを書いて試すことで、より深く理解できるようになります。
