はじめに

JavaScript DOM 操作の実験へようこそ。Document Object Model (DOM) は、ウェブドキュメントのためのプログラミングインターフェースです。これはページを表し、プログラムがドキュメントの構造、スタイル、コンテンツを変更できるようにします。ウェブページが読み込まれると、ブラウザはそのページの DOM を作成します。これはオブジェクトのツリーのような構造です。

この実験では、JavaScript を使用して DOM と対話する方法を学びます。要素の選択、コンテンツの変更、属性の変更、新しい要素の動的な作成とページへの追加を練習します。これらは、インタラクティブでダイナミックなウェブアプリケーションを作成するための基本的なスキルです。

この実験を完了すると、以下のことができるようになります。

  • ID を使用して DOM から要素を選択する。
  • 要素のコンテンツを変更する。
  • 要素の属性を設定する。
  • 新しい要素を作成する。
  • 新しい要素をドキュメントに追加する。

始めましょう!

getElementById で ID による要素の選択

このステップでは、一意の ID を使用して HTML 要素を選択する方法を学びます。document.getElementById() メソッドは、DOM 内の特定の要素にアクセスするための最も一般的な方法の 1 つです。

まず、WebIDE の左側にあるファイルエクスプローラーで script.js ファイルを見つけます。それをクリックしてエディターで開きます。セットアップスクリプトがこのファイルを既に作成しています。

次に、script.js に以下のコードを追加します。このコードは、ID main-content を持つ div 要素を選択し、contentDiv という変数に格納します。その後、この要素をコンソールにログ出力して、正しく選択されたことを確認します。

const contentDiv = document.getElementById("main-content");

console.log(contentDiv);

コードを追加した後、script.js ファイルを保存します。結果を確認するには、インターフェースの上部にある「Web 8080」タブをクリックします。ページ自体に視覚的な変更はありませんが、console.log の出力を確認できます。これを行うには、ブラウザの開発者ツールを開きます(通常はページを右クリックして「検証」を選択し、「コンソール」タブに移動することで開けます)。コンソールに HTML の div 要素がログ出力されているはずです。

Console showing selected div element

innerHTML でテキストコンテンツの変更

このステップでは、選択した要素のコンテンツを変更します。innerHTML プロパティを使用すると、要素内の HTML コンテンツを取得または設定できます。これは、ウェブページに表示される内容を動的に変更するための強力な方法です。

前のステップで書いたコードの下に、script.js ファイルの編集を続けます。以下の行を追加します。これにより、選択した div の中のテキストが変更されます。

const contentDiv = document.getElementById("main-content");

// This line is new
contentDiv.innerHTML = "The content has been changed by JavaScript!";

console.log(contentDiv);

script.js ファイルを保存してください。次に、「Web 8080」タブに戻ってページをリフレッシュします。ボックス内のテキストが「This is the original content.」から「The content has been changed by JavaScript!」に変更されているはずです。

JavaScript changes div content

setAttribute メソッドによる属性の設定

このステップでは、リンクの href や画像の src のような、要素の属性を変更する方法を学びます。この目的には setAttribute() メソッドが使用されます。このメソッドは 2 つの引数を取ります。1 つ目は設定する属性の名前、2 つ目はその属性に設定する値です。

私たちの index.html ファイルには、ID labex-link を持つリンク(<a> タグ)が含まれています。これを LabEx ウェブサイトを指すように href 属性を変更しましょう。

script.js ファイルに以下のコードを追加してください。

// Select the link element
const link = document.getElementById("labex-link");

// Set its href attribute
link.setAttribute("href", "https://labex.io");

これで、script.js ファイル全体は以下のようになります。

const contentDiv = document.getElementById("main-content");
contentDiv.innerHTML = "The content has been changed by JavaScript!";
console.log(contentDiv);

// Select the link element
const link = document.getElementById("labex-link");

// Set its href attribute
link.setAttribute("href", "https://labex.io");

ファイルを保存し、「Web 8080」タブに切り替えてリフレッシュしてください。「LabEx」リンクにカーソルを合わせると、ブラウザのステータスバーに https://labex.io を指していることが表示されるはずです。クリックすると、そのページに移動しようとします。

createElement による新規要素の作成

このステップでは、JavaScript を使用して、まったく新しい HTML 要素を一から作成します。これは動的なインターフェースを構築する上で中心的な部分であり、リストに新しい項目を追加したり、新しいメッセージを表示したりする必要がある場合などに使用されます。document.createElement() メソッドは、タグ名で指定された要素を作成するために使用されます。

新しい段落(<p>)要素を作成しましょう。以下のコードを script.js ファイルの末尾に追加してください。

// Create a new paragraph element
const newParagraph = document.createElement("p");

// Set its content
newParagraph.innerHTML = "This is a new paragraph created with JavaScript.";

// Add a class for styling
newParagraph.className = "new-element";

この時点では、要素はブラウザのメモリ内に作成されていますが、まだページ上には表示されていません。要素を作成し、innerHTML を使用してそのコンテンツを設定し、CSS クラスを割り当てたため、style.css ファイルに従ってスタイルが適用されます。次のステップでは、この新しい要素をドキュメントに追加する方法を学びます。

appendChild による子要素の追加

この最終ステップでは、前のステップで作成した要素をウェブページに追加します。appendChild() メソッドは、ノード(要素)を親要素の最後の子供として追加します。

まず、新しい段落を配置したい親要素を選択する必要があります。私たちの index.html には、この目的のために ID container を持つ div があります。次に、appendChild() を使用して newParagraph をそれに(子として)追加します。

以下のコードを script.js の末尾に追加してください。

// Get the container element
const container = document.getElementById("container");

// Append the new paragraph to the container
container.appendChild(newParagraph);

これで、script.js ファイル全体に、前のステップからのすべてのコードが含まれるようになります。ファイルを保存し、「Web 8080」タブをリフレッシュしてください。ページ上のリンクの下に、新しくスタイルが適用された段落が表示されるはずです。

おめでとうございます!DOM を操作してコンテンツを変更し、属性を設定し、新しい要素を動的に作成して表示することに成功しました。

Screenshot showing appended paragraph in web page

まとめ

この実験では、JavaScript を使用して Document Object Model (DOM) を操作するための基本的なテクニックを学びました。これらのスキルは、動的でインタラクティブなウェブページを作成するために不可欠です。

以下の操作を実際に練習しました。

  • document.getElementById() を使用した DOM からの要素の選択。
  • innerHTML プロパティを使用した要素コンテンツの変更。
  • setAttribute() メソッドを使用した要素の属性の変更。
  • document.createElement() を使用したメモリ内での新しい HTML 要素の作成。
  • appendChild() を使用した新しく作成された要素のウェブページへの追加。

これらのメソッドを組み合わせることで、ユーザーのアクションに応答し、データを動的に表示する複雑なユーザーインターフェースを構築できます。この実験の完了、おめでとうございます!