コース一覧
JavaScript道場 ハレノヒ珈琲を動かす10問
ダークモード切替

JavaScript道場 ハレノヒ珈琲を動かす10問

JavaScript の基本を終えた人が、白紙から画面を動かす演習専用コースです。解説はありません。依頼と完成条件だけを読み、自分でコードを組み立てます。HTML と CSS は用意してあるので、書くのは JavaScript だけです。手が止まったときのために、方針・使う構文・部分解の3段階のヒントを各問に用意しています。クリックへの応答から始まり、クラスの切り替え、入力の監視、配列の絞り込みと描画、フォームの検証、タブの出し分けを経て、最後は予約ページの一連の流れまで、10問で主要な操作を一巡します。1問15分から45分、全10問で約5時間です。JavaScript入門を終えて「読めるけれど自分では書けない」と感じている方に向いています。

1
初段
01. ボタンで挨拶を出せ15分
02. ダークモード切替15分
03. 文字数カウンター20分
04. メニューの絞り込み25分
2
中段
01. 予約フォームの検証25分
02. 配列からメニューを描画せよ25分
03. タブ切替30分
04. 営業中か準備中かを判定せよ30分
3
師範
01. 時計の表示を整えよ30分
02. 総合 予約ページ完成45分

ダークモード切替

初段 / 目安 15分

陽葵さんがスマホを片手に走ってきました。「前に仕込んでもらった夜モード、あれすごくよかったの。でも今は勝手に切り替わらないでしょ? ボタンで切り替えられるようにして!」

実は下ごしらえはもう済んでいます。CSS には body.dark のときだけ色が入れ替わる仕掛けが書いてあり、色は --bg --fg --accent の3つの変数にまとめてあります。つまり body に dark というクラスが1つ付くかどうかで、ページ全体の見た目が丸ごと変わります。

やることは、ボタンが押されるたびに body の dark を付けたり外したりすることだけです。あわせて、ボタンの文字も切り替えてください。夜モードでないときは「夜モードにする」、夜モードのときは「昼モードにする」です。押してもボタンの文言が変わらないと、いま何モードなのかが利用者に伝わりません。

完成条件

  • #theme-btn を押すと body に dark クラスが付く
  • もう一度押すと dark クラスが外れる
  • 夜モードのときはボタンの文言に「昼モード」を含める
  • 昼モードに戻したらボタンの文言は「夜モード」を含める

進め方

「付いていたら外す、付いていなかったら付ける」を if で書くこともできますが、classList にはそれ専用の toggle があります。1行で済むほうを選んでください。

文言の切り替えには、いま夜モードかどうかの判定が要ります。classList.toggle は付けたあとの状態を true か false で返してくれるので、その戻り値をそのまま使うのが素直です。三項演算子を使うと1行に収まります。

body を取るのは document.body です。ここだけは getElementById が要りません。

ヒントは3段階で、①方針、②使う構文、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。

課題

  1. #theme-btn のクリックで body の dark クラスをトグルする
  2. もう一度押すと dark クラスが外れる
  3. 夜モードのときはボタンの文言を「昼モードにする」に変える
  4. 昼モードに戻ったらボタンの文言を「夜モードにする」に戻す

ヒント

前のヒントを開くと次が開きます。開かずに解けると未開封クリアです

①方針 ボタンに click の待ち伏せを1つ仕掛け、その中で body のクラスを切り替えます。切り替えたあとの状態を見てボタンの文言も決めます。

ヒント 2ヒント 1 を開くと読めます
ヒント 3ヒント 2 を開くと読めます
index.html
style.css
script.js
プレビュー

できているか

  • 開いた直後は昼モードになっている
  • 1回押すと夜モードになり、ボタンの文言も変わる
  • もう一度押すと昼モードに戻る
エディタを読み込んでいます