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

HTML と CSS で仕上げたハレノヒ珈琲のサイトを眺めながら、店長の陽葵さんが腕を組んでいます。「きれいになったのは嬉しいんだけど、なんだか静かなのよね」。しばらく考えて、こちらを見ました。「トップのボタンを押したら『いらっしゃいませ!』って出したいの。おもてなしでしょ?」

ここから先は JavaScript の間合いです。HTML と CSS はもう書きあがっていて、この道場では触りません。書き換えるのは script.js の中だけです。

画面にはすでに id="greet-btn" のボタンと、まだ空っぽの id="greeting" の段落が置いてあります。押されたら空っぽの段落に文字を入れる、それがこの一問でやることのすべてです。あわせて、挨拶が出ている状態だと分かるように shown クラスも付けてください。CSS 側には .greeting.shown の飾りが仕込んであるので、クラスを付けた瞬間に左の線が出ます。

完成条件

  • #greet-btn が押されたとき、#greeting に「いらっしゃいませ」を含む文字が出る
  • 同じタイミングで #greeting に shown クラスを付ける

進め方

ブラウザの JavaScript は、だいたい「取る・待つ・変える」の3拍子でできています。まず動かしたい要素を取り、次にその要素に「押されたら」という待ち伏せを仕掛け、押されたときに中身を変えます。

取るのは document.getElementById です。待ち伏せは addEventListener で、第1引数に待つ出来事の名前、第2引数に起きたときに走らせる関数を渡します。中身を変えるのは textContent への代入、クラスを足すのは classList.add です。

押しても何も起きないときは、たいてい id の綴りが違うか、待ち伏せを仕掛けた相手が違います。

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

課題

  1. #greet-btn のクリックで #greeting に挨拶文を表示する
  2. 挨拶文には「いらっしゃいませ」を含める
  3. 同じクリックで #greeting に shown クラスを付ける

ヒント

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

①方針 ボタンの要素と、文字を出す段落の要素を先に変数に取っておきます。そのうえでボタンに「押されたら」の待ち伏せを1つ仕掛け、その中で段落を書き換えます。

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

できているか

  • 開いた直後はまだ挨拶が出ていない
  • ボタンを押すと「いらっしゃいませ」が出る
  • 挨拶が出ている段落に shown クラスが付いている
エディタを読み込んでいます