SEARCH

CATEGORY

[JavaScript] 曜日ごとに要素を表示・切り替える方法

・特定の曜日だけキャンペーン情報を表示したい
・曜日ごとに異なるメッセージを表示したい
といった動作は、JavaScriptを使うことで簡単に実現できます。

本記事では、基本の実装方法から応用パターン、エラー対策まで、実例を交えて詳しく解説します。

曜日を取得する仕組み

JavaScriptでは、Dateオブジェクトの getDay() メソッドを使うことで、現在の曜日を数値(0 = 日曜日 ~ 6 = 土曜日)として取得できます。

基本の実装

水曜日にだけ要素を表示する

水曜日にだけ特定の要素を表示するには、CSSであらかじめ非表示にしておき、JavaScriptで曜日を判定してから表示させます。

・HTML

・CSS

・JavaScript

※ 元々 flex や inline-block を使っている場合は、それに合わせて display の値を変更してください。

・CodePenデモ

See the Pen [JavaScript] 水曜日だけ要素を表示する| by mkl may (@mkl-may) on CodePen.

classList を使って表示を切り替える方法

style.display を直接変更する方法でも実装できますが、実務では CSS クラスを付け外しして表示を切り替えるケースもよくあります。

CSS 側で表示用のクラスを定義しておくことで、デザインやアニメーションを管理しやすくなるのがメリットです。

・HTML

・CSS

・JavaScript

・CodePenデモ

See the Pen [JavaScript] 水曜日だけ要素を表示する|classList by mkl may (@mkl-may) on CodePen.

classList.add() を使うことで、JavaScript 側では「表示するかどうか」の制御だけを担当し、見た目の管理は CSS に任せられます。

また、フェードインなどのアニメーションを追加したい場合も、CSS クラスベースの実装のほうが拡張しやすくなります。

応用例1:複数の曜日に表示する場合

月・水・金曜日など複数の曜日に表示したい場合は、配列や Set を使って条件を管理するのが便利です。

・JavaScript

・CodePenデモ

See the Pen [JavaScript] 複数の曜日に要素を表示する by mkl may (@mkl-may) on CodePen.

応用例2:曜日ごとに表示内容を切り替える

曜日ごとに表示内容を切り替えたい場合は、オブジェクトでメッセージを管理すると分かりやすくなります。

・JavaScript

・CodePenデモ

See the Pen [JavaScript] 曜日ごとに異なる要素を表示する by mkl may (@mkl-may) on CodePen.

応用例3:特定の曜日・時間帯に表示する

水曜日の15時以降にだけ表示するといった、曜日と時間帯を組み合わせた条件も実装可能です。

・JavaScript

・CodePenデモ

See the Pen [JavaScript] 特定の曜日・時間帯に要素を表示する by mkl may (@mkl-may) on CodePen.

エラー対策・注意点

要素が存在しない場合の対処

指定したセレクタの要素が存在しないと、querySelectorでnullが返るため、その後の操作でエラーになる可能性があります。
if (!element) return; を入れることで、安全に処理を止めることができます。

・JavaScript

JavaScriptが無効な環境への配慮

一部のユーザー環境では、JavaScriptが無効になっている場合があります。
JavaScriptが無効な環境では、曜日判定による表示切り替えは動作しません。
その場合でも最低限の案内を表示したいときは、<noscript> タグを利用します。

まとめ

JavaScriptを使うことで、「特定の曜日だけ表示する」「曜日ごとに内容を切り替える」「時間帯によって表示を変更する」といった動作を実装できます。

  • getDay() を使うと曜日を数値で取得できる
  • 複数曜日の判定には Set や配列が便利
  • getHours() を組み合わせると時間帯指定も可能
  • querySelector() の結果確認を行い、エラーを防ぐ
  • 必要に応じて <noscript> で JavaScript 無効時にも配慮する

シンプルな条件分岐でも、曜日ごとのキャンペーン表示や営業時間案内など、さまざまな場面で活用できます。