JavaScript

JavaScript

【JavaScript】ボタンの連打を防止する方法|disabled・fetch+finally・throttle・debounceとの違いまで

JavaScriptでボタンの連打を防止する方法を、disabledでの無効化・非同期処理をfetch+finallyで確実に解除する書き方・フラグ方式・一定時間内に最大1回だけ実行する汎用throttle関数・debounceとの違いまで実装コードで解説します。
JavaScript

【JavaScript】画像が読み込まれたかを判定して処理を実行する方法|onload・complete・naturalWidth・onerror・decode

JavaScriptで画像の読み込み完了を検知して処理を実行する方法を、loadイベント・complete+naturalWidthでの成功判定・onerrorと代替画像・ハンドラをsrcより前に設定する理由・decode()・Promise.allで全画像待ちまで実装コードで解説します。
JavaScript

【JavaScript】指定回数クリックで処理を実行する方法|累積カウント・一定時間内の連打・ダブル/トリプルクリックまで

JavaScriptで指定回数クリックされたら処理を実行する方法を、累積カウント・一度だけ実行・一定時間内にN回の連打検知・event.detailによるダブル/トリプルクリック・再利用クラスまで実装コードで解説します。
JavaScript

【JavaScript】配列の重複を削除する方法|Set・filter・Mapでオブジェクト配列・NaNの罠まで解説

JavaScriptで配列の重複を削除する方法を、最速のSet・filter+indexOf・オブジェクト配列のMap/findIndexまで整理。NaNが消える落とし穴、O(n)とO(n²)の計算量、最初/最後どちらを残すか、参照型の注意まで実測コードで解説します。
JavaScript

【JavaScript】URLに応じてページの表示内容を切り替える方法

URLのパス・クエリパラメータ・ハッシュのどれで表示を出し分けるかを判断基準とともに整理し、完全一致での安全なパス判定、URLSearchParams、hashchange/popstateでの再判定、JavaScript無効時のフォールバックまで実装コードで解説します。
JavaScript

【JavaScript】一定時間スクロールされなかったらポップアップを表示する方法

ページを開いたまま一定時間スクロール(操作)がないユーザーにポップアップを表示する方法を、最小実装から本物のアイドル検出・sessionStorageでの表示回数制御・短いページ対策・アクセシビリティ・再利用クラスまで実装コードで解説します。
JavaScript

【JavaScript】入力フォームの自動補完機能を実装する方法

入力フォームに自動補完(オートコンプリート)を実装する方法を解説します。まずはHTML標準のdatalistで手軽に、次にJavaScriptでカスタムUI(候補の絞り込み・選択・外クリックで閉じる)を実装します。サーバーから候補を取得する方法や、キーボード操作・ARIA対応の発展版まで、動くデモ付きで紹介します。
JavaScript

【JavaScript】URLパラメータを取得して処理を分岐する方法

URLパラメータを取得して処理を分岐する方法を解説します。URLSearchParamsでのget/has/getAll、if/else・switch・オブジェクトマップでの分岐、Object.fromEntriesでの一括取得、リロードせずにパラメータを更新するhistory.replaceState、戻る/進むに対応するpopstateまで、Nodeで検証したコードで紹介します。
JavaScript

【JavaScript】フォーム入力内容をローカルストレージに保存する方法|リロードしても消えない!

フォームの入力内容をlocalStorageに保存し、リロードしても消えないようにする方法を解説します。inputイベントでの保存・DOMContentLoadedでの復元、複数フィールドをJSON.stringifyで一括保存、チェックボックス対応、送信後のクリア、機密情報を保存しない注意点まで、Nodeで検証したコードで紹介します。
JavaScript

【JavaScript】IntersectionObserverでスクロール時に要素をふわっと表示させる方法

IntersectionObserverを使って、スクロールで画面に入った要素をふわっと表示する方法を解説します。CSSのtransitionでフェードアップ、IntersectionObserverでのクラス付与、一度きりにするunobserve、threshold/rootMarginの調整、prefers-reduced-motionへの配慮まで、動くデモ付きで紹介します。
JavaScript

【JavaScript】ページ読み込み後に一度だけ実行される処理の書き方

ページ読み込み後に一度だけ処理を実行する方法を解説します。DOM構築後のDOMContentLoaded、画像まで待つload、イベントを使わずに済むdeferスクリプト、「毎回」と「初回アクセスだけ」の違い(localStorage)、jQueryのreadyまで、使い分けを表でまとめて紹介します。
JavaScript

【JavaScript】1行で書ける便利テクニック10選

JavaScriptで覚えておくと便利な1行テクニックを10個紹介します。三項演算子、??によるデフォルト値、スプレッドでの配列コピー、filter・map・includes、IIFE、Object.keys、文字列→数値変換、短いループまで、Nodeで動作確認したコードで解説します。可読性とのバランスも紹介します。
JavaScript

【JavaScript】アンカーリンクのスムーススクロールを実装する方法

アンカーリンク(#リンク)のスムーススクロールを実装する方法を解説します。一番簡単なCSSのscroll-behavior、固定ヘッダー対応のscroll-margin-top、JavaScriptでのscrollIntoView・scrollToによるオフセット調整、prefers-reduced-motionへの配慮まで、用途別に紹介します。
JavaScript

【JavaScript】フォーム送信時に全角スペースを半角スペースに変換する方法

フォーム送信時に全角スペースを半角スペースへ変換する方法を解説します。submitイベントでreplace(/ /g, " ")を使う基本、すべての入力欄をまとめて変換する方法、英数字も含めて一括正規化するnormalize("NFKC")、IMEに配慮したリアルタイム変換まで、Nodeで検証したコードで紹介します。
JavaScript

【JavaScript】スマホでクリックイベントが動作しない場合の原因と解決方法

スマホでJavaScriptのclickイベントが動かない原因と解決方法を解説します。実はclickはスマホでも動くこと(300ms遅延は今はほぼ無い)、クリックできない要素やCSS(pointer-events・重なり・タップ領域)、touchstartとの二重発火、UA判定ではなくmatchMediaで判定する方法まで、アンチパターンを避けた正しい対処を紹介します。
JavaScript

【JavaScript】親要素を取得する方法

JavaScriptで親要素を取得する方法を、parentElement・parentNode・closestの3つで解説します。parentElementとparentNodeの本当の違い(最上位でのみ差が出る)、特定の祖先をたどるclosest()、さらに上の階層へのたどり方まで、実例で紹介します。
JavaScript

【JavaScript】要素が画面内にあるかどうかを判別する方法

要素が画面内(ビューポート内)にあるかを判別する方法を、IntersectionObserverとgetBoundingClientRectの2通りで解説します。「完全に見える」と「一部でも見える」で判定条件が違う点、scrollイベントで判定するときの間引き、どちらを使うべきかの使い分けまで、Nodeで検証した条件式で紹介します。
JavaScript

【JavaScript】Micromodal.jsで簡単にモーダルを実装する方法

Micromodal.jsで軽量・アクセシブルなモーダルを実装する方法を解説します。CDN/npmでの導入、必要なHTML構造、MicroModal.init()とshow()での開閉、disableScrollなどのオプション、CSSの調整まで紹介します。まずはネイティブのdialog要素で足りるかも検討します。
JavaScript

【JavaScript】指定した要素が一定数以上ある場合にアコーディオンを実装する方法

要素が一定数を超えたときだけ「もっと見る」で折りたたむ方法を解説します。querySelectorAllで件数をチェックし、超過分をdisplay:noneで隠してボタンで開閉。aria-expandedの更新、max-heightでの開閉アニメーション、動くデモまで紹介します。
JavaScript

【JavaScript】Intersection Observerを使った画像の遅延読み込み方法

Intersection Observerで画像の遅延読み込み(Lazy Load)を実装する方法を解説します。data-src+srcの差し替え、読み込み後のフェードイン、unobserveでの監視解除、rootMarginで画面手前から先読みする方法、読み込み失敗時の対処まで、まずはネイティブのloading="lazy"を検討する前提で紹介します。