コース一覧
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分

タブ切替

中段 / 目安 30分

「メニューとアクセスとお知らせ、ぜんぶ縦に並んでて長いの」と陽葵さん。「タブでパッと切り替わるやつ、あるでしょう。あれにしたい。今風でしょ?」

タブは、見た目こそ今風ですが、中でやっていることは驚くほど素朴です。一度ぜんぶ隠してから、選ばれた1つだけを出す。これだけです。

順番を逆にすると必ず壊れます。「押されたパネルを出す」だけを書くと、前に出ていたパネルが残って2つ並びます。「押されていないパネルを隠す」を条件分岐で書くと、パネルが増えるたびに分岐が増えます。だから、まず全部隠す、それから1つ出す。この順で書くと、パネルが何枚あっても同じコードで動きます。

タブの側も同じ考え方です。全部から active を外してから、押されたタブにだけ付けます。

HTML は読み取り専用で、次の形で用意してあります。タブのボタンは .tab で、それぞれ data-target にパネルの id が書いてあります。パネルは .panel で、隠すためのクラス hidden は CSS 側で用意ずみです。押されたボタンから dataset.target を読めば、出すべきパネルの id がそのまま手に入ります。押されたのがどれかを if で判定する必要はありません。

最初の表示はメニューが出ている状態にしてください。HTML の初期状態でアクセスとお知らせには hidden が付いています。

完成条件

  • .tab のすべてにクリックのイベントを付ける
  • クリックされたら、まず全部の .panel に hidden クラスを付けて隠す
  • 次に、押されたタブの data-target が指す id のパネルから hidden を外す
  • タブの強調も同じ順で切り替える。全部の .tab から active を外し、押されたタブにだけ active を付ける

進め方

白紙から書いてください。手が止まったらヒントを開けます。ヒントは3段階で、①方針、②使う構文、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。

課題

  1. すべての .tab にクリックのイベントを付ける
  2. クリック時にまず全部の .panel へ hidden クラスを付けて隠す
  3. 押されたタブの data-target が指すパネルから hidden を外す
  4. 全部の .tab から active を外し、押されたタブにだけ active を付ける

ヒント

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

①方針 「押されたものを出す」より先に「全部を隠す」を書きます。全部隠してから1つ出す順にすると、パネルが3枚でも10枚でも同じコードで動きます

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

できているか

  • アクセスを押すとアクセスだけが出る
  • お知らせを押すとお知らせだけが出る
  • メニューに戻すとメニューだけが出る
エディタを読み込んでいます