JavaScriptでWebページを動的に操作する際、DOM (Document Object Model) は欠かせません。DOMは、HTMLやXML文書の構造をJavaScriptで操作できるようにしたAPIで、ブラウザ上でリアルタイムに文書内容の更新やイベントハンドリングを可能にします。この章では、DOMの基本概念と操作から始まり、イベントリスナーの利用、そしてDOMの変更を伴うリアクティブなUI作成まで、JavaScriptを活用した具体的な実装方法について詳しく解説していきます。
DOMは、WebページのHTML文書をツリー構造で表現します。各HTML要素は「ノード」としてツリーの一部を形成し、親子関係でリンクされています。この構造を操作することで、JavaScriptを使ってページ内容を変更したり、要素を追加・削除したりできます。たとえば、以下のようなHTML構造を考えてみましょう。
<!DOCTYPE html>
<html>
<head>
<title>DOM Example</title>
</head>
<body>
<div id="container">
<h1>Hello, World!</h1>
<p>Welcome to the world of DOM manipulation with JavaScript.</p>
</div>
</body>
</html>
このHTMLは、container
というdiv
要素にh1
とp
要素が子ノードとして存在するシンプルなDOMツリーです。JavaScriptでは、これらのノードにアクセスして、動的に内容を変更することができます。
DOM要素を操作する第一歩は、JavaScriptから特定の要素にアクセスすることです。JavaScriptでは、さまざまなメソッドを使ってDOMの要素を取得できます。
document.getElementById('id')
:指定されたid
を持つ要素を取得します。document.querySelector('selector')
:指定されたCSSセレクタにマッチする最初の要素を取得します。document.querySelectorAll('selector')
:指定されたCSSセレクタにマッチするすべての要素を取得します。以下に、上記のHTMLのh1
要素を取得し、内容を変更するコード例を示します。
const heading = document.getElementById('container').querySelector('h1');
heading.textContent = "Hello, DOM!";
このコードでは、まずcontainer
のdiv
要素を取得し、その中の最初のh1
要素を選択しています。その後、textContent
プロパティを使用して、見出しの内容を変更しています。
DOM要素を取得したら、次に要素の内容や属性を変更したり、新しい要素を追加したりできます。以下のプロパティとメソッドを使って操作します。
textContent
:要素内のテキストを変更します。innerHTML
:HTMLマークアップを含むテキストを変更します。setAttribute('attribute', 'value')
:属性を設定します。classList.add('class')
/ classList.remove('class')
:クラスを追加・削除します。以下に例を示します。
const paragraph = document.querySelector('p');
paragraph.textContent = "DOM操作に成功しました!";
paragraph.classList.add('highlight');
このコードでは、最初のp
要素の内容を変更し、新たにhighlight
というクラスを追加しています。
DOM操作だけではなく、ユーザーの操作(クリックや入力など)に応じて、動的な処理を行うことがJavaScriptの醍醐味です。これを実現するためには、イベントリスナーとイベントハンドリングの知識が必要です。
JavaScriptでは、addEventListener
メソッドを使って、DOM要素に対してイベントリスナーを設定できます。このメソッドは、次のように使用します。
element.addEventListener('event', function);
例えば、ボタンがクリックされたときに特定の処理を行いたい場合、以下のコードのようにclick
イベントにリスナーを設定します。
<button id="myButton">Click me!</button>
const button = document.getElementById('myButton');
button.addEventListener('click', function() {
alert("Button was clicked!");
});
このコードでは、myButton
というIDを持つボタンがクリックされると、アラートボックスが表示されます。
イベントには多種多様な種類があり、それぞれのイベントによってハンドリング方法が異なります。主なイベントの種類と例をいくつか紹介します。
click
:要素がクリックされたときに発生mouseover
:マウスポインタが要素に重なったときに発生keydown
:キーボードのキーが押されたときに発生input
:入力フィールドに変更があったときに発生以下のコードでは、入力フィールドに文字が入力されるたびに内容が表示されます。
<input type="text" id="nameInput" placeholder="Type your name">
<p id="displayName"></p>
const input = document.getElementById('nameInput');
const displayName = document.getElementById('displayName');
input.addEventListener('input', function() {
displayName.textContent = "Hello, " + input.value;
});
このコードにより、ユーザーがinput
フィールドに文字を入力するたびに、displayName
の内容が更新されます。
ユーザーの操作に応じてページ内容を変化させることで、動的でインタラクティブなUI(ユーザーインターフェース)を作成することができます。ここでは、DOMの変更を伴うリアクティブなUIの作成方法を見ていきます。
JavaScriptでは、createElement
メソッドを使って新しい要素を作成し、appendChild
やremoveChild
メソッドを使って要素を追加・削除できます。以下に、新しい項目をリストに追加するコード例を示します。
<ul id="taskList">
<li>Task 1</li>
</ul>
<button id="addTask">Add Task</button>
const taskList = document.getElementById('taskList');
const addTaskButton = document.getElementById('addTask');
addTaskButton.addEventListener('click', function() {
const newTask = document.createElement('li');
newTask.textContent = "New Task";
taskList.appendChild(newTask);
});
このコードでは、「Add Task」ボタンがクリックされるたびに、リストに新しいタスクが追加されます。
classList
メソッドを使うと、要素のクラスを動的に変更してスタイルを切り替えることができます。以下に、クリックした際に要素の色を変えるコード例を示します。
<div id="colorBox" class="blueBox">Click me to change color</div>
const colorBox = document.getElementById('colorBox');
colorBox.addEventListener('click', function() {
colorBox.classList.toggle('redBox');
});
このコードでは、colorBox
がクリックされるたびにクラスが切り替わり、スタイルが変化します(blueBox
とredBox
はあらかじめCSSで設定)
プログラミングを始めたいと思っているそこのあなた、独学よりもプログラミングスクールが断然おすすめです!理由は簡単、続けやすさです。
独学でプログラミングを続けるのは、実はかなりハードルが高いんです。データによると、なんと87.5%もの学習者が途中で挫折しているとか。一方、各プログラミングスクールが公表しているデータによると、受講生の約95%が最後までやり抜いているとのこと。数字を見れば一目瞭然、プログラミングスクールの方が圧倒的に続けやすいんです。
プログラミングスクールには有料と無料のタイプがありますが、その違いは次の通りです:
どちらが自分に合っているか、よく考えて選ぶのが大事です。
プログラミング初心者でも学びやすいと評判の『FREEKS』、その特徴は以下の通り:
なんと、月会費のみで全カリキュラムが受け放題!Java、PHP、HTML/CSS、JavaScriptなど、多彩なプログラミング言語が学べるんです。しかも、AIが質問に自動で答えてくれるシステムも導入済み。
カリキュラムを終了した後には、Freeks経由で未経験者でも取り組める副業案件の受注が可能。実務を通じてスキルを磨き、市場価値の高いエンジニアへの道が開けます。
独学で悩むくらいなら、まずはプログラミングスクールをチェックしてみるのもアリかもしれませんよ!
↓ ↓ こちらをクリック ↓ ↓