読み込み中...

たった10選でJavaScriptボタン作成をマスター

javascriptで作成したボタンの例 JS
この記事は約18分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読めば、JavaScriptでボタンを作成する方法を10選で身につけることができます。

初心者でも分かりやすい説明で、サンプルコードを交えながら進めていきます。

ボタン作成の基本から応用例、注意点と対処法、さらにカスタマイズ方法まで網羅しています。

●ボタン作成の基本

○HTMLとJavaScriptでボタンを作る方法

まずは、HTMLとJavaScriptでボタンを作成する基本的な方法を学びましょう。

HTMLでボタン要素を作成し、JavaScriptでイベントを設定することで、ボタンを活用できます。

HTML部分は下記のように記述します。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>ボタン作成の例</title>
</head>
<body>
  <button id="myButton">ボタン</button>
  <script src="main.js"></script>
</body>
</html>

JavaScript部分は下記のように記述します。

// main.js
const myButton = document.getElementById('myButton');

myButton.addEventListener('click', () => {
  console.log('ボタンがクリックされました!');
});

このコードでは、HTMLでボタン要素を作成し、JavaScriptでクリックイベントを設定しています。

ボタンがクリックされると、「ボタンがクリックされました!」というメッセージがコンソールに表示されます。

○イベントリスナーの使い方

イベントリスナーは、要素にイベントを設定するための関数です。

次のような書き方で使用します。

element.addEventListener(event, function);
  • element: イベントを設定したい要素
  • event: 設定したいイベント(例:’click’)
  • function: イベントが発生したときに実行する関数

●サンプルコード集

○サンプルコード1:シンプルなボタン

このコードでは、シンプルなボタンを作成しています。

ボタンをクリックすると、メッセージがコンソールに表示されます。

<button id="simpleButton">シンプルなボタン</button>
<script>
const simpleButton = document.getElementById('simpleButton');

simpleButton.addEventListener('click', () => {
  console.log('シンプルなボタンがクリックされました!');
});
</script>

○サンプルコード2:アラート表示ボタン

このコードでは、アラート表示ボタンを作成する方法を紹介しています。

この例では、ボタンをクリックするとアラートダイアログが表示されるようにしています。

<button id="alertButton">アラート表示ボタン</button>
<script>
const alertButton = document.getElementById('alertButton');

alertButton.addEventListener('click', () => {
  alert('アラート表示ボタンがクリックされました!');
});
</script>

○サンプルコード3:画像切り替えボタン

このコードでは、画像切り替えボタンを作成する方法を紹介しています。

この例では、ボタンをクリックすると画像が切り替わるようにしています。

<button id="imageToggleButton">画像切り替えボタン</button>
<img id="myImage" src="image1.jpg" alt="画像1">
<script>
const imageToggleButton = document.getElementById('imageToggleButton');
const myImage = document.getElementById('myImage');

imageToggleButton.addEventListener('click', () => {
  if (myImage.src.endsWith('image1.jpg')) {
    myImage.src = 'image2.jpg';
    myImage.alt = '画像2';
  } else {
    myImage.src = 'image1.jpg';
    myImage.alt = '画像1';
  }
});
</script>

○サンプルコード4:テキスト変更ボタン

このコードでは、テキスト変更ボタンを作成する方法を紹介しています。

この例では、ボタンをクリックするとテキストが変更されるようにしています。

<button id="textChangeButton">テキスト変更ボタン</button>
<p id="myText">ここにテキストが表示されます。</p>
<script>
const textChangeButton = document.getElementById('textChangeButton');
const myText = document.getElementById('myText');

textChangeButton.addEventListener('click', () => {
  myText.textContent = 'テキストが変更されました!';
});
</script>

○サンプルコード5:カウンターボタン

このコードでは、カウンターボタンを作成する方法を紹介しています。

この例では、ボタンをクリックするとカウントが増えるようにしています。

<button id="counterButton">カウンターボタン</button>
<p id="count">0</p>
<script>
const counterButton = document.getElementById('counterButton');
const count = document.getElementById('count');
let counter = 0;

counterButton.addEventListener('click', () => {
  counter += 1;
  count.textContent = counter;
});
</script>

○サンプルコード6:トグルボタン

このコードでは、トグルボタンを使って要素の表示・非表示を切り替える方法を紹介しています。

この例では、ボタンをクリックするとテキスト要素が表示・非表示が切り替わります。

<button id="toggleButton">トグルボタン</button>
<p id="toggleText">ここにテキストが表示されます。</p>
<script>
const toggleButton = document.getElementById('toggleButton');
const toggleText = document.getElementById('toggleText');

toggleButton.addEventListener('click', () => {
  if (toggleText.style.display === 'none') {
    toggleText.style.display = 'block';
  } else {
    toggleText.style.display = 'none';
  }
});
</script>

○サンプルコード7:フォーム送信ボタン

このコードでは、フォーム送信ボタンを作成する方法を紹介しています。

この例では、ボタンをクリックするとフォームの内容が送信されます。

<form id="myForm">
  <input type="text" name="text" placeholder="テキストを入力">
  <button type="submit">フォーム送信ボタン</button>
</form>
<script>
const myForm = document.getElementById('myForm');

myForm.addEventListener('submit', (e) => {
  e.preventDefault();
  console.log('フォームが送信されました。');
});
</script>

○サンプルコード8:リンク付きボタン

このコードでは、リンク付きボタンを作成する方法を紹介しています。

この例では、ボタンをクリックすると指定されたリンクに移動します。

<button id="linkButton">リンク付きボタン</button>
<script>
const linkButton = document.getElementById('linkButton');

linkButton.addEventListener('click', () => {
  window.location.href = 'https://example.com';
});
</script>

○サンプルコード9:音声再生ボタン

このコードでは、音声再生ボタンを作成する方法を紹介しています。

この例では、ボタンをクリックすると音声ファイルが再生されます。

<button id="audioButton">音声再生ボタン</button>
<audio id="myAudio" src="sample.mp3"></audio>
<script>
const audioButton = document.getElementById('audioButton');
const myAudio = document.getElementById('myAudio');

audioButton.addEventListener('click', () => {
  myAudio.play();
});
</script>

○サンプルコード10:アニメーションボタン

このコードでは、アニメーションボタンを作成し、要素にアニメーションを適用する方法を紹介しています。

この例では、ボタンをクリックすると要素がスケールアップしてアニメーション効果が適用されます。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <style>
    #animatedElement {
      width: 100px;
      height: 100px;
      background-color: red;
      transition: transform 0.5s;
    }
  </style>
</head>
<body>
  <button id="animationButton">アニメーションボタン</button>
  <div id="animatedElement">アニメーション要素</div>
  <script>
    const animationButton = document.getElementById('animationButton');
    const animatedElement = document.getElementById('animatedElement');
    let isScaled = false;

    animationButton.addEventListener('click', () => {
      if (isScaled) {
        animatedElement.style.transform = 'scale(1)';
      } else {
        animatedElement.style.transform = 'scale(1.5)';
      }
      isScaled = !isScaled;
    });
  </script>
</body>
</html>

ここで、アニメーションボタンをクリックすると、スケールアップするアニメーションがanimatedElementに適用されます。

transitionプロパティを使ってアニメーションの速さとタイプを指定しています。

isScaledという変数を使って、要素が現在スケールアップされているかどうかを判定し、それに応じてスケールを変更しています。

このように、ボタンを使ってアニメーション効果を適用することができます。

他のアニメーション効果や複数の要素に対しても応用可能です。

●応用例とサンプルコード

ここでは、ボタンを用いた応用例として、モーダルウィンドウとタブメニューを紹介します。

○応用例1:モーダルウィンドウ

モーダルウィンドウは、ウェブページ上にポップアップ表示される小さなウィンドウで、ユーザーに情報を提示したり、入力を求めることができます。

下記のコードでは、ボタンをクリックするとモーダルウィンドウが表示され、閉じるボタンをクリックするとモーダルウィンドウが閉じる機能を実装しています。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <style>
    .modal {
      display: none;
      position: fixed;
      z-index: 1;
      left: 0;
      top: 0;
      width: 100%;
      height: 100%;
      background-color: rgba(0, 0, 0, 0.5);
    }
    .modal-content {
      background-color: white;
      margin: 15% auto;
      padding: 20px;
      border: 1px solid #888;
      width: 80%;
    }
  </style>
</head>
<body>
  <button id="openModal">モーダルを開く</button>
  <div id="myModal" class="modal">
    <div class="modal-content">
      <span id="closeModal">&times;</span>
      <p>モーダルウィンドウのコンテンツ</p>
    </div>
  </div>
  <script>
    const openModal = document.getElementById('openModal');
    const closeModal = document.getElementById('closeModal');
    const myModal = document.getElementById('myModal');

    openModal.addEventListener('click', () => {
      myModal.style.display = 'block';
    });

    closeModal.addEventListener('click', () => {
      myModal.style.display = 'none';
    });

    window.addEventListener('click', (event) => {
      if (event.target === myModal) {
        myModal.style.display = 'none';
      }
    });
  </script>
</body>
</html>

このコードでは、ボタンをクリックすることでモーダルウィンドウを表示し、閉じるボタンまたはモーダルウィンドウの外側をクリックすることでモーダルウィンドウを閉じる機能が実装されています。

○応用例2:タブメニュー

タブメニューは、複数のコンテンツを同じ領域に表示し、タブをクリックすることで切り替えることができるUIです。

下記のコードでは、タブメニューを実装しています。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <style>
    .tab {
      display: inline-block;
      padding: 10px;
      cursor: pointer;
      background-color: #f1f1f1;
      border: solid 1px #ccc;
    }
    .tab-content {
      display: none;
      padding: 20px;
      border: solid 1px #ccc;
      border-top: none;
    }
  </style>
</head>
<body>
  <div id="tab1" class="tab">タブ1</div>
  <div id="tab2" class="tab">タブ2</div>
  <div id="content1" class="tab-content">タブ1のコンテンツ</div>
  <div id="content2" class="tab-content">タブ2のコンテンツ</div>
  <script>
    const tab1 = document.getElementById('tab1');
    const tab2 = document.getElementById('tab2');
    const content1 = document.getElementById('content1');
    const content2 = document.getElementById('content2');

    tab1.addEventListener('click', () => {
      content1.style.display = 'block';
      content2.style.display = 'none';
    });

    tab2.addEventListener('click', () => {
      content1.style.display = 'none';
      content2.style.display = 'block';
    });

    tab1.click();
  </script>
</body>
</html>

このコードでは、タブ1とタブ2のボタンをクリックすることで、それぞれ対応するコンテンツ(content1, content2)が表示され、他のコンテンツが非表示になる機能を実装しています。

また、初期状態ではタブ1が選択された状態になるようにしています。

●注意点と対処法

○ボタンが押されない場合の対処法

ボタンが押されない場合は、主に次の原因が考えられます。

  1. JavaScriptのコードに誤りがある
  2. 要素のIDやクラス名が正しく指定されていない

これらの問題を解決するためには、ブラウザの開発者ツールを使用してエラーや警告を確認し、必要に応じてコードを修正してください。

○ボタンが二重に反応する場合の対処法

ボタンが二重に反応する場合は、イベントリスナーが複数回登録されている可能性があります。

イベントリスナーの登録は、スクリプト内で一度だけ行うように注意してください。

また、下記のような原因も考えられます。

  1. JavaScriptファイルが重複して読み込まれている
  2. 同じイベントリスナーが異なる箇所で登録されている

これらの問題を解決するためには、コードを整理し、重複したイベントリスナーの登録やファイルの読み込みがないことを確認してください。

●カスタマイズ方法

○ボタンのスタイル変更

ボタンの見た目を変更するには、CSSを編集してください。

例えば、ボタンの背景色や文字色を変更する場合、下記のようにスタイルを編集できます。

button {
  background-color: #4CAF50;
  color: white;
  border: none;
  padding: 10px 20px;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 16px;
}

この例では、ボタンの背景色を緑色にし、文字色を白色に変更しています。

○ボタンの挙動変更

ボタンの挙動を変更するには、JavaScriptのコードを編集してください。

例えば、ボタンをクリックした際にアラートを表示する機能を追加する場合、次のようにコードを変更できます。

const button = document.querySelector('button');

button.addEventListener('click', () => {
  alert('ボタンがクリックされました');
});

この例では、ボタンがクリックされるとアラートが表示される機能を実装しています。

まとめ

本稿では、アニメーションボタンの作成方法や、モーダルウィンドウやタブメニューなどの応用例を紹介しました。

また、ボタンが押されない場合や二重に反応する場合の対処法、さらにカスタマイズ方法についても解説しました。

これらの知識を活用して、自分のウェブページに合ったボタンを実装してください。