速報

AWS SDK for pandasのIceberg書き込みにSQL注入|Glueの変更権限も点検

CATEGORY

【JavaScript】初回クリック時にのみ処理を実行する

※本ページのリンクにはプロモーションが含まれています。

【JavaScript】初回クリック時にのみ処理を実行する

目次

本記事では、JavaScriptで初回クリック時にのみ処理を実行する方法をご紹介しています。

JavaScriptで1回目のクリックだけに反応するボタンが作りたいんだけど、どうすればいいの?

上記の疑問のお答えしています。

では、解説していきます。

スポンサーリンク

addEventListenerのonceをtrueにする

初回クリック時にのみ処理を実行するには、addEventListenerのoptionにonce: trueを設定する方法が一番簡単です。下記のようにaddEventListenerのoptionにonce: trueと追加するだけです。

let btn = document.getElementById('btn');

btn.addEventListener( 'click', function () { alert('Clicked!!'); }, { once: true } );

上記のようにoptionを指定することで1回だけイベントを発火するという処理を実装することができます。簡単で簡潔ですよね。

下記で実行結果をご確認いただけます。ボタンをクリックすると、一度だけアラートが表示されるかと思います。

See the Pen 6047-1 by ryohei (@intotheprogram) on CodePen.

ただ、このoption…欠点があります。残念なことにIE11で動作しないのです。IE11に対応しない方針であれば、こちらの方法がベストなのですが、IE11に対応しなければならない場合は、別の方法を考える必要があります。

せっかくですので、IE11でも動作する処理を考えてみましょう。

IE11で初回クリック時にのみ処理を実行する

初回のみ実行する処理……と聞いてパッと思いつくのはやっぱりあれとあれですよね。

クリック済みのフラグを立てる

1つ目はフラグです。ボタンがクリックされたらフラグを立てて条件分岐するという王道の処理ですね。

スクリプトにすると下記のようになります。

let clicked;
let btn = document.getElementById('btn');

btn.addEventListener('click', function () { if (clicked !== true) { alert('Clicked!'); } clicked = true; });

下記は実行結果です。初回クリック時にのみアラートが表示されて以降はクリックしてもアラートは表示されないかと思います。

See the Pen 6047 by ryohei (@intotheprogram) on CodePen.

これが1つ目の代替案です。

2つ目の代替案は、設定したクリックイベント自体を削除してしまう方法です。

クリックイベントを削除する

ではイベントを削除する処理を作成してみます。

let btn = document.getElementById('btn');

function myFunc(){ alert('Clicked!'); btn.removeEventListener('click', myFunc, false); }

btn.addEventListener('click', myFunc, false);

上記のスクリプト5行目にイベントを削除する記述を入れています。こうすることで設定されていたクリックイベントを削除することができます。

実行結果を確認してみると、初回クリックの後にイベントが削除されているかと思います。

See the Pen 6047-3 by ryohei (@intotheprogram) on CodePen.

上記2つの代替案であればIE11で想定した動作になるかと思います。

スポンサーリンク

最後に

現在のJavaScriptには、IE11で動作しないプロパティや関数やオプションが数多く存在します。JavaScriptはドキュメントが充実していますし、Web上には多くの情報が提供されています。動作が定かではないものに関しては都確認するようにしておくことでクレームを免れることができます。IE11のサポートが切れるまで後数年……もうしばらくの我慢です。歯を食いしばってがんばりましょう。

以上、JavaScriptで初回クリック時にのみ処理を実行する方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / アプリ開発者 / 技術ブログ運営者

福岡のWeb制作会社に勤務するWebエンジニアです。10年以上にわたりWeb制作・開発に携わり、ヒアリングや進行管理から、コーディング、CMSの構築、システム開発、サーバーの構築・保守・運用まで、Webサイト制作の工程を幅広く担当しています。Webサイトは、これまでに100以上の構築・保守を手がけてきました。

個人でもWebサイトの制作・改修やWebアプリの開発・運用を行い、AIを活用した開発にも取り組んでいます。近年はWebセキュリティにも注力しています。

2015年から技術メディア「Into the Program」を運営し、実務や開発で得た知識をもとに、プログラミングの実装方法やWebサイトの運用・セキュリティ情報を発信しています。

主な分野
Webサイト構築・保守・運用 / HTML/CSS / JavaScript / PHP / WordPress / サーバー構築・保守・運用 / アプリ開発 / セキュリティ対策
資格・試験合格
情報セキュリティマネジメント試験
基本情報技術者試験
AWS認定ソリューションアーキテクト アソシエイト
PHP8技術者認定ウィザード
メディア運営
2015年〜

記事の作成・更新について

セキュリティ記事は、ベンダーの公式アドバイザリやCVE・JVNなどの一次情報を参照し、出典と情報確認日を記載します。実環境での検証を行った場合は、その環境と確認範囲を明示します。重要な追加情報や誤りを把握した場合は、内容を確認して追記・訂正します。

関連する記事

おすすめの書籍

キーワードから探す

スポンサーリンク