第5回HTML解説(中、上級編): JavaScriptを使ったインタラクティブなWebページ

これまでの回で、HTMLやCSSを使って静的なWebページを作る方法を学びました。今回は、JavaScriptを使ってWebページにインタラクティブな機能を追加し、より動的でユーザーとのやり取りが可能なページを作成していきます。

1. JavaScriptの基本

JavaScript(以下JS)は、Webページに動きを加えたり、ユーザーの入力に応じた処理を行うためのプログラミング言語です。HTMLやCSSと異なり、JSはブラウザで実行され、ユーザーの操作に応じた動的な変化を可能にします。

基本的な構文

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>JavaScript Example</title>
</head>
<body>
  <button id="myButton">クリックしてみて</button>

  <script>
    document.getElementById('myButton').addEventListener('click', function() {
      alert('ボタンがクリックされました!');
    });
  </script>
</body>
</html>

  • getElementById(): HTML要素をIDで取得します。この例では、myButtonというIDを持つボタンを取得しています。
  • addEventListener(): ユーザーが行う操作(イベント)に反応して、指定された動作を実行します。今回はボタンがクリックされたときにアラートが表示されるように設定しています。

2. DOM操作

DOM(Document Object Model)とは、HTML文書の構造をツリー状に表現したもので、JavaScriptを使ってこのDOMを操作することで、ページの内容をリアルタイムで変更できます。

DOMの例: コンテンツを動的に追加

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>DOM操作の例</title>
</head>
<body>
  <div id="content"></div>
  <button id="addContentButton">コンテンツを追加</button>

  <script>
    document.getElementById('addContentButton').addEventListener('click', function() {
      var newElement = document.createElement('p');
      newElement.textContent = '新しいパラグラフが追加されました!';
      document.getElementById('content').appendChild(newElement);
    });
  </script>
</body>
</html>

  • createElement(): 新しいHTML要素を作成します。この例では、新しい<p>タグが作成されます。
  • appendChild(): 作成した要素を指定した場所に追加します。

3. フォームのバリデーション

フォームの入力内容をJavaScriptでチェックすることで、ユーザーが正しい情報を入力しているかどうかを確認できます。

簡単なバリデーションの例

&lt;!DOCTYPE html>
&lt;html lang="ja">
&lt;head>
  &lt;meta charset="UTF-8">
  &lt;meta name="viewport" content="width=device-width, initial-scale=1.0">
  &lt;title>フォームのバリデーション&lt;/title>
&lt;/head>
&lt;body>
  &lt;form id="myForm">
    &lt;label for="name">名前:&lt;/label>
    &lt;input type="text" id="name" name="name">
    &lt;button type="submit">送信&lt;/button>
  &lt;/form>

  &lt;script>
    document.getElementById('myForm').addEventListener('submit', function(event) {
      var nameInput = document.getElementById('name');
      if (nameInput.value === '') {
        alert('名前を入力してください');
        event.preventDefault(); // フォーム送信を停止
      }
    });
  &lt;/script>
&lt;/body>
&lt;/html>

  • event.preventDefault(): フォームが送信されるのを一時的に止め、ユーザーに警告メッセージを表示します。

4. 簡単なアニメーションの作成

JavaScriptを使って、CSSだけでは難しい複雑なアニメーションを作成することもできます。

ボックスを左右に動かすアニメーションの例

&lt;!DOCTYPE html>
&lt;html lang="ja">
&lt;head>
  &lt;meta charset="UTF-8">
  &lt;meta name="viewport" content="width=device-width, initial-scale=1.0">
  &lt;title>JavaScript Animation&lt;/title>
  &lt;style>
    #box {
      width: 50px;
      height: 50px;
      background-color: coral;
      position: absolute;
      left: 0;
      top: 50px;
    }
  &lt;/style>
&lt;/head>
&lt;body>
  &lt;div id="box">&lt;/div>

  &lt;script>
    var box = document.getElementById('box');
    var position = 0;
    var interval = setInterval(moveBox, 10);

    function moveBox() {
      if (position >= 300) {
        clearInterval(interval);
      } else {
        position++;
        box.style.left = position + 'px';
      }
    }
  &lt;/script>
&lt;/body>
&lt;/html>

  • setInterval(): 一定間隔ごとに関数を実行します。この例では、moveBox関数が毎秒100回実行され、ボックスが右に動いていきます。

5. ユーザー入力に応じたリアルタイム更新

JavaScriptを使うことで、ユーザーが入力した内容に応じて、リアルタイムでページの内容を更新することもできます。

リアルタイムのテキスト更新の例

&lt;!DOCTYPE html>
&lt;html lang="ja">
&lt;head>
  &lt;meta charset="UTF-8">
  &lt;meta name="viewport" content="width=device-width, initial-scale=1.0">
  &lt;title>リアルタイムのテキスト更新&lt;/title>
&lt;/head>
&lt;body>
  &lt;input type="text" id="inputField" placeholder="テキストを入力してください">
  &lt;p>あなたが入力したテキスト: &lt;span id="output">&lt;/span>&lt;/p>

  &lt;script>
    document.getElementById('inputField').addEventListener('input', function() {
      document.getElementById('output').textContent = this.value;
    });
  &lt;/script>
&lt;/body>
&lt;/html>

  • inputイベント: ユーザーが入力フィールドに文字を入力するたびに発生し、リアルタイムで出力を更新します。

まとめ

第5回では、JavaScriptを使ってWebページにインタラクティブな機能を追加する方法を学びました。フォームのバリデーションやアニメーション、DOM操作などを用いることで、より動的でユーザーフレンドリーなWebページを作成できます。

次回は、JavaScriptのより高度なテクニックや、Ajaxを使ってサーバーと通信する方法などを学んでいきます!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です