現役システムエンジニアの備忘録

技術スキルや用語などの記録を残していきます

DOM / Document(ページ操作)

documentとは?HTML操作の基本と実例【JavaScript入門】

投稿日:2019年4月24日 更新日:

本記事にはプロモーション(アフィリエイト広告)を含みます。

この記事で分かること

  • documentとHTML文書・DOMの関係
  • documentを使って文字やフォームの値を扱う方法
  • 画像の説明文やリンク先を変更する方法
  • document.write()の動きと注意点
  • 例が動かないときの確認箇所

JavaScriptでページの文字やフォーム、画像、リンクを扱うときに見かけるのがdocumentです。ただし、これはページの内容そのものと同じ意味ではありません。

この記事では、documentとページの関係を図で整理し、コードを使ってページの内容を変更する方法を説明します。古い書き出し方法の注意点や、試すときにつまずきやすい点も確認できます。



documentはページの内容を扱う入口

documentは、ブラウザに表示されているHTML文書をJavaScriptから扱うためのオブジェクトです。ページの内容を読み取ったり、文字や要素を変更したりするときに使います。

補足:ブラウザとは?
Google ChromeやSafariなど、Webページを見るためのアプリです。
補足:HTMLとは?
Webページの見出しや文章、画像などを記述するための決まりです。ページの内容や並び方を、コンピューターに伝えます。
補足:JavaScriptとは?
Webページに動きや操作を加えるために使われるプログラミング言語です。たとえば、ボタンを押したときに文章を変える処理を書けます。
補足:オブジェクトとは?
関連する情報や操作をひとまとめにしたものです。ページに関する情報や操作をまとめたものの一つがdocumentです。

たとえば、ブラウザのページ内でdocumentと書くと、現在表示しているページを扱えます。window.documentと書くこともできますが、通常のページ操作ではwindowを省いてdocumentと書けます。

補足:windowとは?
ブラウザのページを表示しているまとまりを表す名前です。ページの内容を表すdocumentは、その中から利用できます。

ただし、documentはHTMLファイルの文字列そのものではありません。ブラウザがHTMLを読み取り、ページ内の部品をJavaScriptから扱える形にしたものと関係しています。

補足:文字列とは?
文章や名前などの文字を、プログラムで扱うときの呼び方です。例では、入力欄に書かれた名前が文字列として使われます。

関係を簡単に表すと、HTML文書をもとにDOMが作られ、documentを通じてそのページの部品を扱います。

補足:DOM(ドム)とは?
Document Object Modelの略です。HTML文書の見出しや文章、画像などを、JavaScriptから読み取ったり変更したりできるようにした仕組みです。

HTML文書をもとにDOMが作られ、JavaScriptがdocumentを通じてページ内の部品を扱う関係図。

このように、documentはページを操作する入口で、実際に変更する対象はページ内の要素です。DOMの詳しい仕組みは、【JavaScript入門】DOMとは?仕組み・ノード・ツリー構造を初心者向けにわかりやすく解説で確認できます。

documentで文字・フォーム・画像・リンクを扱う

補足:フォームとは?
名前やメールアドレスなどを入力して、ページに情報を送るための欄や部品です。

ここでは、入力欄に書いた名前をページに表示し、画像の説明文とリンク先も変更する例を紹介します。HTMLとJavaScriptを一つのファイルに書くため、保存してブラウザで開けば試せます。

次のコードをdocument-example.htmlという名前で保存してください。画像を表示するには、コードと同じ場所にsample.jpgという画像ファイルを置きます。別の名前の画像を使う場合は、コード内のファイル名も合わせて変更してください。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>documentの練習</title>
</head>
<body>
  <h1>ページ操作の練習</h1>

  <label for="nameInput">名前:</label>
  <input id="nameInput" type="text" value="花子">
  <button id="applyButton" type="button">表示を更新</button>

  <p id="result">ここに名前が表示されます。</p>

  <img id="sampleImage" src="sample.jpg" alt="サンプル画像" width="160">

  <p><a id="detailLink" href="#top">詳細を見る</a></p>

  <h2 id="details">詳細</h2>
  <p>リンク先になる見出しです。</p>

  <script>
    const button = document.getElementById("applyButton");

    button.addEventListener("click", function () {
      const name = document.getElementById("nameInput").value;
      const result = document.getElementById("result");
      const image = document.getElementById("sampleImage");
      const detailLink = document.getElementById("detailLink");

      result.textContent = name || "(名前が入力されていません)";
      image.alt = name ? name + "さんの画像" : "名前が入力されていません";
      detailLink.href = "#details";
    });
  </script>
</body>
</html>

コードでは、document.getElementById()で変更したい部品を見つけています。見つけた部品のtextContent、alt、hrefを書き換えることで、表示する文字や画像の説明、リンク先を変更します。

image.altは画像そのものを差し替えるのではなく、画像の代わりに伝える説明文を変更します。detailLink.hrefはリンクを押したときの移動先を変更します。

この例では、入力欄の名前を変更し、「表示を更新」を押します。入力した名前が文章に表示され、画像の説明文が変わります。リンクの移動先は「詳細」の見出しになります。

想定される結果:入力欄に「花子」と入れた状態でボタンを押すと、ページに「花子」と表示されます。画像の説明文は「花子さんの画像」に変わり、「詳細を見る」を押すと「詳細」の見出しへ移動します。

注意:この記事では、掲載コードの実行環境やブラウザごとの動作確認は行っていません。公開前に、使用するブラウザとそのバージョンを記録してコードを実行し、表示結果を確認してください。



documentとHTML属性の違い

コードではimage.altやdetailLink.hrefを使いました。これらは、HTMLに書かれた画像やリンクの情報を、JavaScriptから読み書きするときのプロパティです。

補足:プロパティとは?
部品が持っている情報や設定に付いた名前です。例のvalueは入力欄の文字、textContentは部品内の文字を表します。

HTMLに記述された属性と、JavaScriptから扱うプロパティは、対応していても常に同じものとは限りません。まずは、ページ上の部品を取得して、その情報や表示内容を変更する書き方として例を見てください。

補足:属性とは?
HTMLの部品に追加情報を付けるための記述です。たとえば、画像のファイル名やリンク先を指定します。
名前 この例で扱う内容
value 入力欄に入っている文字
textContent ページ内に表示する文字
alt 画像を説明する文字
href リンクを押したときの移動先

入力欄の値を扱う例をさらに知りたい場合は、【JavaScript入門】value・defaultValue・textの使い方|入力値・初期値・選択肢文字列を扱う方法も参考になります。

document.write()は何をする?

document.write()は、ページの読み込み中に文書へ文字を書き出すための機能です。次の例は、JavaScriptが実行された位置に「JavaScript」と表示する書き方です。

document.write("JavaScript");

想定される結果:ページ上に「JavaScript」と表示されます。

ただし、ページの読み込みが終わった後に呼び出すと、文書の内容を置き換えてしまう場合があります。状況によっては書き出しが行われないこともあるため、ページの一部を変更する目的には使わないでください。

注意:document.write()の動きは、呼び出すタイミングや読み込み方法などの条件によって変わります。読み込み後に使うと必ず同じ結果になる、と決めつけず、ページの一部を変更する例ではgetElementById()などで対象を取得して変更してください。

ページの読み込み後に文字を追加したい場合は、追加する場所をHTMLに用意し、その部品の文字を変更する方法があります。たとえば、前の例ではresult.textContentを書き換えています。document.write()の詳しい使い方と注意点は、【JavaScript入門】document.writeとdocument.writelnの使い方|違い・注意点・HTML出力の仕組みを解説で説明しています。

document.fgColorは使うべき?

document.fgColorは、ページ全体の文字色に関係する古いプロパティです。現代のページで文字色を変える場合は、ページ全体の色をまとめて変更するのではなく、対象の部品や見た目を指定して調整する方法を選びます。

注意:fgColorは現在のページ制作で新しく使う方法としては適しません。対応状況に差がある可能性もあるため、使用せず、目的に合ったCSSで色を指定してください。

古い色指定の詳しい説明は、【JavaScript入門】document.fgColorとは?文字色の取得・変更方法と注意点を初心者向けに解説を参照してください。



例が動かないときの確認方法

  • ボタンを押しても変化しない:HTML内のidと、getElementById()に書いた名前が一致しているか確認します。

    補足:idとは?
    ページ内の部品を区別するために付ける名前です。コードで部品を探すときは、HTML側とJavaScript側の名前を同じにします。
  • 画像が表示されない:sample.jpgがHTMLファイルと同じ場所にあるか、ファイル名の大文字・小文字も含めて確認します。
  • 名前が表示されない:入力欄に文字を入れてからボタンを押したか、入力欄のidがコードと一致しているか確認します。
  • リンクが移動しない:リンク先の#detailsと、移動先の見出しのidが一致しているか確認します。

コードの書き方が正しいかだけでなく、HTMLに指定した名前とJavaScriptで探す名前が一致しているかも確認してください。JavaScriptの読み込み位置やブラウザの違いによる問題が疑われる場合は、実際の環境で再現して記録する必要があります。

さらに学びたい人向けの書籍

JavaScriptを順序立てて学びたい人向けの書籍 PR

この記事では、documentを使ったページ操作の基本を紹介しました。JavaScriptの基礎からDOM操作やフォーム操作まで、コード例を試しながら学びたい場合は、書籍も選択肢になります。

これからのJavaScriptの教科書

JavaScriptの基本文法から、ページ操作やフォーム操作、非同期処理などを幅広く扱う書籍です。サンプルコードを試しながら、基礎から先の内容まで学びたい人に向いています。

選ぶ前に知っておきたい点:全608ページのため、この記事の要点だけを短時間で確認したい人には分量が多く感じられる場合があります。特定のフレームワークを中心に学ぶ本ではありません。

本の内容や版の情報は、出版社の書籍紹介で確認できます。

documentに関するよくある質問

Q1

documentとDOMは同じものですか?

A

同じものではありません。DOMはページの部品をJavaScriptから扱う仕組みで、documentはそのページを扱う入口です。

Q2

window.documentのように書く必要がありますか?

A

通常のページ操作では、windowを省いてdocumentと書けます。既存のコードでwindow.documentを見かけても、どちらもページの文書を扱う書き方です。

Q3

document.write()を使ってもよいですか?

A

読み込み中に文書へ書き出す用途はありますが、読み込み後のページの一部を変更する方法としては使わないでください。呼び出すタイミングなどによって文書を置き換える場合があるため、対象の部品を取得して変更する方法を使います。

Q4

文字色を変えるためにdocument.fgColorを使えますか?

A

fgColorは古いプロパティなので、新しいページで使う方法としては選ばないでください。文字色はCSSで指定します。



仕様を確認できる資料

このページの説明を確かめるときは、次の資料を参照してください。document.write()は呼び出す状況によって動きが変わるため、特に実行条件を確認してください。

ブラウザの種類やバージョンによる動作差を本文で断定するための検証記録はありません。仕様と実際の表示を照合するときは、使用したブラウザ名・バージョン・確認日を記録してください。

まとめ

  • documentは、JavaScriptからページを扱う入口
  • 実際に変更する対象は、ページ内の見出しや入力欄などの要素
  • 入力値や文字、画像の説明、リンク先は、対象を取得して変更できる
  • document.write()は呼び出すタイミングによって文書を置き換える場合がある
  • fgColorは古いプロパティのため、新しいページでは使わない

次は、ページの部品を扱うDOMの仕組みを確認すると、documentが何をしているか理解しやすくなります。学習の順序を確認したい場合は、JavaScript DOMロードマップ|初心者が最短でページ操作を理解するためのガイドやJavaScript ロードマップ|基礎からDOM・イベント・フォーム操作まで体系的に学ぶガイドも参考にしてください。

このブログは Xserver 上の WordPress で運用しています。
表示速度が速く、安定しているのでブログ初心者にもおすすめです。

→ レンタルサーバー エックスサーバー

-DOM / Document(ページ操作)

執筆者: