2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Javascriptを使って独自のダイアログボックスを作成する

Posted at

【開発環境】
macOS Catalina
バージョン 10.15.3
visual studio code

#Javascriptを使ってダイアログボックスを作成する
Image from Gyazo

ダイアログボックスは一般的にalert()やprompt()などで作ります。しかし、これらで作るとカスタマイズができません。
今回は自作で、自由にカスタマイズできるダイアログボックスを作っていきます。
##骨組みとなるhtmlとcssを作っていきます
まず、html.cssを作っていきます。

index.html
<body>
    <form id="dialog" name="dialog">
      <p>ボタンをクリックしてください</p>
      <input type="button" name="yes" value="はい" />
      <input type="button" name="no" value="いいえ" />
      <input type="button" name="cancel" value="キャンセル" />
    </form>
    
    <script>

    </script>
</body>

次にcssを付与していきます。今回は、head要素内にstyleタグを追加してCSSを記述します。

index.html
<head>
  <style>
    #dialog {
      width: 250px;
      padding: 30px 20px;
      text-align: center;
      border: 1px solid #aaa;
      box-shadow: 2px 2px 4px #888;
    }
  </style>
</head>

これで骨組みが完成しました。これからjsを記述していきます。
##Javascriptの記述
form要素で作成しているので、name属性を利用すればJavaScriptから簡単にアクセスすることができます。

index.html
<script>
    //form要素を取得する
    const form = document.forms.dialog;

    form.yes.addEventListener("click", () => {
      console.log("「はい」がクリックされました");
    });

    form.no.addEventListener("click", () => {
      console.log("「いいえ」がクリックされました");
    });

    form.cancel.addEventListener("click", () => {
      console.log("「キャンセル」がクリックされました");
    });
</script>

各ボタンに対してクリックイベント処理を実装しています。
addEventListenerメソッドを用いてclickされた時に文字が表示されるようにします。
以上でダイアログボックスの作成は完了です。

##おわりに
今回は簡単な自作ダイアログボックスの作成手順を紹介しました。
間違いなどがありましたらご指摘いただければ幸いです。
最後までご覧いただきありがとうございました。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?