ボタンを押したら動かす — イベントの基本
「押したら開く」「押したら切り替わる」。Webページらしい動きの正体はイベントです。addEventListener の型を覚えて、開閉メニューまで作ってみます。
ここまでの記事で「要素を探す」ところまで来ました。今回はそこに「操作されたら動く」を足します。この2つが組み合わさると、一気にページらしくなります。
書き方はいつも同じ形
script.js
対象.addEventListener("イベント名", function () {
// 起きたときにやること
});「誰が」「何をされたとき」「何をするか」の3点セットです。イベント名でよく使うのは click(押された)、input(入力された)、submit(送信された)あたりです。まずは click だけ覚えれば十分です。
count = count + 1 の 1 を 2 に変えると、増え方が変わります。プレビューのボタンを実際に押してみてください。
見た目の切り替えは class の付け外しで
「押したら開く」を作るとき、JavaScriptで高さや色を直接いじる必要はありません。開いた状態のCSSを先に用意しておき、JavaScriptは class を付け外しするだけにします。こうしておくと、見た目の調整はCSS側だけで完結します。
classList.toggle は「付いていなければ付ける、付いていれば外す」を1行でやってくれます。開閉の切り替えにはこれが最適です。
style.css の .is-open を書き換えると、開いたときの見た目だけを調整できます。JavaScript側は触りません。
押しても反応しないときの確認順
- 検証ツールのコンソールに赤いエラーが出ていないか
- 取得した対象が null になっていないか(id の綴り違い)
- script タグに defer が付いているか
- イベント名が間違っていないか(clik、onclick など)
この4つで、動かない原因のほとんどは見つかります。押すものは div ではなく button で作っておくと、キーボードからも操作できて確実です。