イベント: ユーザー操作に反応
クリック、入力、スクロールなどに応答する。
イベント
ユーザー操作やブラウザ動作の通知。
リスナー
イベント発生時に呼ばれる関数。
イベント委譲
親要素で子のイベントをまとめて処理。
イベント基礎
// イベントリスナーの追加const button = document.querySelector('button');
button.addEventListener('click', (event) => { console.log('Clicked!', event.target);});
// 複数のイベントbutton.addEventListener('mouseenter', () => console.log('Hover'));button.addEventListener('mouseleave', () => console.log('Leave'));// イベントオブジェクトelement.addEventListener('click', (e) => { e.target; // クリックされた要素 e.currentTarget; // リスナーがついた要素 e.preventDefault(); // デフォルト動作を防止 e.stopPropagation(); // 親への伝播を止める});
// キーボードイベントinput.addEventListener('keydown', (e) => { if (e.key === 'Enter') { submit(); }});イベント委譲 (Event Delegation)
Bad
// ❌ Bad: 各要素に個別リスナー(非効率)items.forEach(item => { item.addEventListener('click', (e) => { handleClick(e.target); });});Good
// ✅ Good: イベント委譲(Event Delegation)container.addEventListener('click', (e) => { if (e.target.matches('.item')) { handleClick(e.target); }}); Tip: 動的に追加される要素にも対応できる。
合格ライン
addEventListener を使える
イベント委譲を説明できる
演習課題
課題1: addEventListener
addEventListener でクリックイベントを処理してください。
課題2: イベント委譲
イベント委譲で動的要素を処理してください。