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

文字数カウンター

初段 / 目安 20分

「お便りフォーム、すごく好評なの」と陽葵さんは嬉しそうです。「でもね、たまに小説みたいに長い方がいて……。読みきれないのが申し訳なくて」。そして一言。「入力してる途中で、残り何文字か出せない? 200字までにしたいの」

画面には id="message" の textarea と、id="counter" の段落があります。counter には最初から「残り 200 文字」と書いてありますが、これはただの文字で、まだ何とも連動していません。

入力のたびに残り文字数を測って、counter を書き換えてください。200字を超えたら文字を赤くします。赤くするための .counter.over は CSS に用意してあるので、over クラスを付け外しするだけで色が変わります。超過している間だけ付いていて、消して200字以内に戻したら外れることが大事です。

残りがマイナスになったときの文言は自由ですが、超過していることが読んで分かる形にしてください。

完成条件

  • textarea に入力するたび #counter の表示が更新される
  • 残り文字数(200 から入力済みの文字数を引いた数)が表示に含まれる
  • 200字を超えたら #counter に over クラスを付ける
  • 200字以内に戻したら over クラスを外す

進め方

入力のたびに走らせたい処理は input イベントで待ち伏せします。change ではありません。change は入力欄から離れたときにしか流れないので、打っている最中には間に合いません。

入力済みの文字数は textarea.value.length で取れます。残りはそれを 200 から引いた数です。数を文字に混ぜるときはテンプレートリテラルが読みやすいです。

over の付け外しは classList.toggle の第2引数が便利です。第2引数に true を渡すと付け、false を渡すと外します。条件式をそのまま渡せば if を書かずに済みます。

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

課題

  1. textarea への入力のたびに #counter の表示を更新する
  2. 残り文字数(200 − 入力文字数)を表示に含める
  3. 200字を超えたら #counter に over クラスを付ける
  4. 200字以内に戻したら over クラスを外す

ヒント

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

①方針 textarea と counter を取り、textarea に input の待ち伏せを仕掛けます。中でやるのは「残りを数える」「文字を出す」「クラスを付け外しする」の3つです。

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

できているか

  • 入力すると残り文字数が更新される
  • 200字を超えると赤くなる
  • 消して200字以内に戻すと赤が消える
エディタを読み込んでいます