2025年9月12日
「ダークモードと季節判定をJSで操作する」
今回は JavaScript を使って、時間によるダークモード判定と季節の背景色切り替えを実装します。
現在のモードに応じて背景色が変わります
季節はここに表示されます
<pre class="EnlighterJSRAW" data-enlighter-language="js">
// =======================================
// 🌙 背景色&季節判定プログラム
// =======================================
// =======================================
// 🚩 DOMContentLoaded
// =======================================
// - HTMLの構造が読み込まれたら実行されるイベント
// - 投稿ページにある <div> や <p> が確実に取得できる
// =======================================
// DOM が準備できたら実行
document.addEventListener("DOMContentLoaded", function() {
// =======================================
// 🚩STEP1: ダークモード判定
// =======================================
// 4️⃣ 関数を定義(timeを引数に取り、条件で"dark"/"light"を返す)
function getDarkModeStatus(time) {
return time > 20 ? "dark" : "light"; // ← 戻り値(関数の外に出す値)
}
// 1️⃣ 変数を呼び出す(mode を準備)
// 2️⃣ new Date() で現在の時刻を取得し、.getHours() で「時」を取り出す
const mode = getDarkModeStatus(new Date().getHours());
// 6️⃣ 戻り値 "dark" または "light" が mode に代入される
// 7️⃣ WordPress投稿ページにある .darkmode-box を取得
const darkmodeBox = document.querySelector(".darkmode-box");
if(darkmodeBox){
// 投稿内のボックスの背景色と文字色を切り替え
darkmodeBox.style.backgroundColor = mode === "dark" ? "#000" : "#fff";
darkmodeBox.style.color = mode === "dark" ? "#fff" : "#000";
}
// 8️⃣ 結果を出力(確認用)
console.log((バッククォート)現在のモード: ${mode}(バッククォート));
// 例: 21時なら "dark"、10時なら "light"
// =======================================
// 🚩STEP2: 季節判定
// =======================================
// 4️⃣ 関数を定義(monthを引数に取り、条件で季節を返す)
function getSeason(month) {
// 5️⃣ if判定(月の範囲ごとに季節を返す)
if (month >= 3 && month <= 5) return "春";
if (month >= 6 && month <= 8) return "夏";
if (month >= 9 && month <= 11) return "秋";
return "冬";
}
// 1️⃣ 変数を呼び出す(currentMonth, season を準備)
const currentMonth = new Date().getMonth() + 1;
// 2️⃣ getSeason(currentMonth) を呼び出し
const season = getSeason(currentMonth);
// WordPress投稿ページにある #season-display を取得
const seasonDisplay = document.getElementById("season-display");
if(seasonDisplay){
seasonDisplay.textContent = "現在の月は " + currentMonth + " 月なので、季節は " + season + " です!";
}
// 7️⃣ season を利用して結果を出力(確認用)
console.log((バッククォート)現在の月は ${currentMonth} 月です(バッククォート));
});
// =======================================
// まとめ(記述順と実行順)
// =======================================
// 記述順: function → 変数 → if文
// 実行順:
// 1️⃣ 変数呼び出し → 2️⃣ 値の取得 → 3️⃣ 関数呼び出し →
// 4️⃣ 関数定義の処理開始 → 5️⃣ if判定 →
// 6️⃣ 戻り値を変数に代入 → 7️⃣ 変数を利用して処理 → 8️⃣ 結果を出力
</pre>