【保存版】JavaScriptで``リンククリック時に確認ダイアログを表示する2つの方法

2024-05-17

JavaScript で <a> リンクをクリック時に確認ダイアログを表示する方法

必要なもの

  • HTML ファイル
  • JavaScript ファイル

手順

  1. HTML ファイルで、確認ダイアログを表示したい <a> リンクを作成します。
  2. JavaScript ファイルで、confirm() メソッドを使用して確認ダイアログを表示します。
  3. ユーザーが "OK" ボタンをクリックした場合、リンク先の URL を開きます。
  4. ユーザーが "キャンセル" ボタンをクリックした場合、何もしません。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>確認ダイアログ</title>
</head>
<body>
  <a href="https://www.example.com/" id="myLink">リンク</a>

  <script src="script.js"></script>
</body>
</html>
// script.js
document.getElementById('myLink').addEventListener('click', function(event) {
  if (!confirm('このリンクを開きますか?')) {
    event.preventDefault();
  }
});

説明

  1. HTML コードでは、id="myLink" という ID を持つ <a> リンクを作成します。
  2. JavaScript コードでは、document.getElementById('myLink') を使用してこのリンクを取得します。
  3. addEventListener('click', function(event) {...}) を使用して、このリンクがクリックされたときに実行される関数を作成します。
  4. 関数内では、confirm('このリンクを開きますか?') を使用して確認ダイアログを表示します。
  5. ユーザーが "OK" ボタンをクリックした場合、if ステートメント内のコードが実行され、event.preventDefault() を使用してデフォルトのリンク動作がキャンセルされます。

補足

  • 確認ダイアログのメッセージは、confirm() メソッドの引数として渡されます。
  • event.preventDefault() を使用してデフォルトのリンク動作をキャンセルしないと、ユーザーが "OK" ボタンをクリックしたときにリンク先が開きます。
  • このコードは、基本的な例です。必要に応じて、メッセージや処理をカスタマイズできます。



    サンプルコード:JavaScript で <a> リンクをクリック時に確認ダイアログを表示する

    HTML (index.html)

    <!DOCTYPE html>
    <html lang="ja">
    <head>
      <meta charset="UTF-8">
      <title>確認ダイアログ</title>
    </head>
    <body>
      <a href="https://www.example.com/" id="myLink">リンク</a>
    
      <script src="script.js"></script>
    </body>
    </html>
    

    JavaScript (script.js)

    document.getElementById('myLink').addEventListener('click', function(event) {
      if (!confirm('このリンクを開きますか?')) {
        event.preventDefault();
      }
    });
    
    • このコードは、2 つのファイル (index.htmlscript.js) で構成されています。
    • index.html ファイルは、確認ダイアログを表示したい <a> リンク (id="myLink") を含みます。
    • script.js ファイルは、confirm() メソッドを使用して確認ダイアログを表示する JavaScript コードを含みます。

    動作

    1. ユーザーが リンク リンクをクリックすると、script.js ファイルの JavaScript コードが実行されます。
    2. confirm() メソッドは、"このリンクを開きますか?" というメッセージを含む確認ダイアログを表示します。
    3. ユーザーが "OK" ボタンをクリックすると、event.preventDefault() が呼び出され、デフォルトのリンク動作がキャンセルされます。その後、https://www.example.com/ にリダイレクトされます。

    カスタマイズ

    • confirm() メソッドの引数に異なるメッセージを指定することで、表示されるメッセージを変更できます。
    • if ステートメント内のコードをカスタマイズすることで、ユーザーが "OK" ボタンをクリックしたときに実行される処理を変更できます。
    • このコードはあくまで基本的な例です。必要に応じて、独自の要件に合わせて調整してください。



    JavaScript で <a> リンクをクリック時に確認ダイアログを表示するその他の方法

    Swal.fire は、美しくカスタマイズ可能なポップアップ ダイアログを簡単に作成できる JavaScript ライブラリです。このライブラリを使用して、確認ダイアログを表示することもできます。

    <!DOCTYPE html>
    <html lang="ja">
    <head>
      <meta charset="UTF-8">
      <title>確認ダイアログ</title>
      <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sweetalert2@latest/dist/sweetalert2.min.css">
    </head>
    <body>
      <a href="https://www.example.com/" id="myLink">リンク</a>
    
      <script src="https://cdn.jsdelivr.net/npm/sweetalert2@latest/dist/sweetalert2.min.js"></script>
      <script>
        document.getElementById('myLink').addEventListener('click', function(event) {
          event.preventDefault();
    
          Swal.fire({
            title: '確認',
            text: 'このリンクを開きますか?',
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#3085d6',
            cancelButtonColor: '#d33',
            confirmButtonText: 'はい',
            cancelButtonText: 'キャンセル'
          }).then((result) => {
            if (result.isConfirmed) {
              window.location.href = 'https://www.example.com/';
            }
          });
        });
      </script>
    </body>
    </html>
    
    • この例では、Swal.fire を使用して確認ダイアログを作成します。
    • ダイアログには、タイトル、メッセージ、警告アイコン、"はい" ボタンと "キャンセル" ボタンが表示されます。
    • ユーザーが "はい" ボタンをクリックすると、window.location.href を使用して https://www.example.com/ にリダイレクトされます。

    利点

    • Swal.fire は、高度なカスタマイズオプションを提供します。
    • ボタンのテキスト、色、アイコンなどを変更できます。
    • アニメーションやその他の効果を追加できます。

    欠点

    • Swal.fire は、confirm() メソッドよりも複雑です。
    • 追加のライブラリをプロジェクトに含める必要があります。

    カスタムダイアログを作成する

    HTML、CSS、JavaScript を使用して、独自のカスタム確認ダイアログを作成することもできます。

    <!DOCTYPE html>
    <html lang="ja">
    <head>
      <meta charset="UTF-8">
      <title>確認ダイアログ</title>
      <style>
        #dialog {
          display: none;
          position: fixed;
          top: 50%;
          left: 50%;
          transform: translate(-50%, -50%);
          background-color: white;
          border: 1px solid #ccc;
          padding: 20px;
          z-index: 1000;
        }
    
        #dialog h3 {
          margin: 0;
        }
    
        #dialog p {
          margin-bottom: 10px;
        }
    
        #dialog button {
          padding: 5px 10px;
          background-color: #3085d6;
          color: white;
          border: none;
          cursor: pointer;
        }
    
        #dialog button:hover {
          background-color: #2877b0;
        }
    
        #dialog #cancel-button {
          background-color: #d33;
        }
    
        #dialog #cancel-button:hover {
          background-color: #b72130;
        }
      </style>
    </head>
    <body>
      <a href="https://www.example.com/" id="myLink">リンク</a>
    
      <div id="dialog">
        <h3>確認</h3>
        <p>このリンクを開きますか?</p>
        <button id="ok-button">はい</button>
        <button id="cancel-button">キャンセル</
    

    javascript html dom-events


    知っておきたい絶対配置の代替案:グリッドレイアウトとフレックスボックス

    答え: 一概に「良い」か「悪い」とは言えません。状況によって適切な使い方が異なるためです。絶対配置とは?絶対配置は、要素を他の要素の相対的な位置ではなく、ページ上の固定された位置に配置するCSSプロパティです。絶対配置を使用する利点複雑なレイアウトを簡単に作成できる...


    HTMLとCSSでdiv内のボタンを中央に配置する方法を徹底解説!

    このチュートリアルでは、HTMLとCSSを使って、div要素内のボタンを中央に配置する方法を説明します。2つの主要な方法を紹介します。方法1: display: flex を使うこの方法は、flexboxレイアウトプロパティを使用して、ボタンを中央に配置するものです。...


    【初心者向け】JavaScriptで2つの数を正しく加算する方法:サンプルコード付き

    問題の現象以下のHTMLコードを見てみましょう。このコードを実行すると、「合計:1020」と表示されるはずです。しかし、実際には「合計:30」と表示されます。原因この問題は、JavaScriptの"+"演算子の挙動に起因します。"+"演算子は、オペランドの種類によって異なる動作をします。...


    JavaScript、Node.js、Webpackで遭遇する「Conflict: Multiple assets emit to the same filename」エラー:原因と解決策

    「Conflict: Multiple assets emit to the same filename」エラーは、Webpackで複数のファイルが同じファイル名で出力しようとしたときに発生します。これは、通常、設定ミスやライブラリの競合などが原因で起こります。...