Eventλ₯Ό μμμΌ νλ μ΄μ
inputμ°½μ κ°μ μ
λ ₯νκ³ , μν°λ₯Ό μ³€μ λ μ§νμ² μμ 리μ€νΈμ μΆκ°νκ³ μΆλ€λ©΄?
μμ λ²νΌμ λλ μ λ μ§νμ² μμ μμ νκ³ μΆλ€λ©΄?
μΈν°λ ν°λΈν μ¬μ©μ κ²½νμ λ§λ€κ³ μΆλ€λ©΄?
μμ κ°μ μ΄λ²€νΈλ₯Ό μ μ°νκ² μ²λ¦¬νκΈ° μν΄μ μ°λ¦¬λ λ°λμ μ΄λ²€νΈλ₯Ό μμμΌν©λλ€. λμ μΈ μΉμ μ¬μ©μμ μνΈμμ©μ΄ μ λμΌ ν©λλ€. κ·Έλ¦¬κ³ κ·Έ μνΈμμ©μ μ΄λ€ μ΄λ²€νΈμ μν΄ λ°μν©λλ€. κ·Έλμ νλ‘ νΈμλμμ λ§μ μΈν°λ μ
μ λͺ¨λΒ Eventλ₯Ό μ²λ¦¬νλ κ²κ³Ό κΉμ κ΄λ ¨μ΄ μμ΅λλ€. κ·ΈλΌΒ EventλΌλ μ¬κ±΄μ λ§λλ¬ κ°λ³ΌκΉμ?
μ΄ λ¬Έμλ₯Ό λ³΄κ³ λλ©΄
μ΄λ²€νΈ μ’
λ₯λ₯Ό μ΅μ 3κ°μ§ μ΄μ λ§ν μ μλ€.
DOM Elementμ μ΄λ²€νΈλ₯Ό λ°μΈλ©ν μ μλ€.
μ΄λ²€νΈμ νλ¦μ μ μ΄ν μ μλ€.
μ΄λ²€νΈ μμμ μ¬μ©ν μ μλ€.
μ΄λ²€νΈ
μΉμ νμνλ λμ λΈλΌμ°μ λ μ¬λ¬ μ’
λ₯μ μ΄λ²€νΈλ₯Ό λ±λ‘ν©λλ€. μ΄λ²€νΈ(event)λ μ΄λ€ μ¬κ±΄μ μλ―Ένλλ°μ. λΈλΌμ°μ μμμ μ¬κ±΄μ΄λ μ¬μ©μκ° ν΄λ¦ νμ 'λ', μ€ν¬λ‘€μ νμ 'λ', ν
μ€νΈλ₯Ό μ
λ ₯νμ 'λ'μ κ°μ κ²μ μλ―Έν©λλ€. μ°λ¦¬λ μ΄μ μ¬μ©μκ° μ§νμ² μ μ΄λ¦μ μ
λ ₯νκ³ μν°λ₯Ό μ
λ ₯νμ 'λ', μμ λ²νΌμ μ
λ ₯νμ 'λ'μ κ°μ μ΄λ²€νΈλ€μ λ€λ£° μ μμ΄μΌν©λλ€.
1. μ΄λ²€νΈμ μ’ λ₯
μ¬μ©μμ μ΄λ²€νΈλ₯Ό λ€λ£¨κΈ° μν΄μλ λ¨Όμ , μ΄λ²€νΈμ μ’
λ₯μ λν΄ μμμΌν©λλ€. μ΄ κΈμμλ κΈ°λ³Έμ μΈ μ΄λ²€νΈλ€μ λ€λ£Ήλλ€.
<h2 class="font-size-20 mb-0 pb-0">1)μ¬μ©μ μΈν°νμ΄μ€ μ΄λ²€νΈ</h2>
HTML
볡μ¬
μ¬μ©μ μΈν°νμ΄μ€(UI)μ΄λ²€νΈλ λΈλΌμ°μ κ° λ‘λν HTMLνμ΄μ§κ° μλ λΈλΌμ°μ μ°½μ μ¬μ©ν λ λ°μνλ μ΄λ²€νΈμ
λλ€. μλ₯Ό λ€μ΄, νμ΄μ§κ° λ‘λλμλ€κ±°λ λΈλΌμ°μ μ°½μ ν¬κΈ°κ° μ‘°μ λ κ²½μ°μ λ°μνλ μ΄λ²€νΈλ€μ
λλ€.
Show All
Search
<h2 class="font-size-20 mb-0 pb-0">2)ν€λ³΄λ μ΄λ²€νΈ</h2>
HTML
볡μ¬
ν€λ³΄λ μ΄λ²€νΈλ μ¬μ©μκ° ν€λ³΄λλ₯Ό μ΄μ©ν λ λ°μν©λλ€.Β keydownμ΄λΒ keypressμ΄λ²€νΈμ λν event κ°μ²΄λ μ΄λ€ ν€κ° λλ Έλμ§λ₯Ό μλ €μ£Όλ μμ±μ κ°μ§κ³ μμ΅λλ€.
Show All
Search
<h2 class="font-size-20 mb-0 pb-0">3)λ§μ°μ€ μ΄λ²€νΈ</h2>
HTML
볡μ¬
λ§μ°μ€ μ΄λ²€νΈλ λ§μ°μ€λ₯Ό μμ§μ΄κ±°λ λ²νΌμ ν΄λ¦νμ λ λ°μν©λλ€.
Show All
Search
<h2 class="font-size-20 mb-0 pb-0">4) π focusμ blur μ΄λ²€νΈ</h2>
HTML
볡μ¬
μ¬μ©μκ° μνΈμμ©μ ν μ μλ λ§ν¬λ νΌ μμ κ°μ HTML μμλ ν¬μ»€μ€λ₯Ό λ°μ μ μμ΅λλ€. μ΄λ° μμλ€μ μμ μ΄ ν¬μ»€μ€λ₯Ό κ°κ±°λ μμ λ μ΄λ²€νΈλ₯Ό λ°μμν΅λλ€. μ΄ μ΄λ²€νΈλ₯Ό νμ©νλ κ²½μ°λ λ€μκ³Ό κ°μ΅λλ€.
β’
μ¬μ©μκ° νΌμ μμλ€κ³Ό μνΈμ§μ©μ ν λ λμλ§μ΄λ νΌλλ°±μ μ 곡νκ³ μ νλ κ²½μ°(λλΆλΆ λμλ§μ μ€μ μ¬μ©μκ° μνΈμ§μ©μ νλ μμκ° μλ λ€λ₯Έ μμλ₯Ό ν΅ν΄ 보μ¬μ€λ€.)
β’
μ¬μ©μκ° (νΌμ μ μΆν λκΉμ§ κΈ°λ€λ¦¬λ λμ ) μ΄λ ν μμμμ λ€λ₯Έ μμλ‘ μ΄λνμ λ μ ν¨μ±κ²μ¬λ₯Ό μνν νμκ° μλ κ²½μ°
Show All
Search
2. μ΄λ²€νΈ νΈλ€λ¬
μ¬μ©μκ° μΉ νμ΄μ§μ HTMLκ³Ό μνΈμμ©ν λ μ΄λ²€νΈλ₯Ό νΈλ€λ§νλλ‘ νλ‘κ·Έλλ°ν μ μμ΅λλ€. μ΄λ²€νΈ νΈλ€λ§ νλ λ°©λ²μλ ν¬κ² 3κ°μ§κ° μμ΅λλ€.
1.
HTML μ΄λ²€νΈ νΈλ€λ¬.
2.
μ ν΅μ μΈ DOM μ΄λ²€νΈ νΈλ€λ¬
3. μ΄λ²€νΈ 리μ€λ(Event Listener)
κ·Έλ¬λ 1,2λ²μ λ°©λ²μ κ²½μ° μ μ¬μ©λμ§ μκ³ , 3λ²μ λ°©λ²μΌλ‘ κ°μ₯ λ§μ΄ μ΄λ²€νΈλ₯Ό λ°μΈλ©ν©λλ€. λ°λΌμ μ΄ κΈμμλ 3λ²μ§Έ λ°©λ²λ§ μκ°ν©λλ€.
μ΄λ²€νΈ 리μ€λ(Event Listener) νμ©
function onAddStationHandler() {
// μ΄λ²€νΈ μ²λ¦¬ λ‘μ§μ ꡬννλ€.
}
// μ§νμ² μ μΆκ° λ²νΌμ μμλ₯Ό κ°μ Έμ¨λ€.
const $stationAddButton = document.querySelector("#station-add-btn");
// ν΄λ¦ μ΄λ²€νΈκ° λ°μνμ λ onAddStationHandlerν¨μκ° μ€νλλλ‘ λ°μΈλ© νλ€.
$stationAddButton.addEventListener('click', onAddStationHandler);
JavaScript
볡μ¬
1.
click: λκΈ°νκ³ μ νλ μ΄λ²€νΈ. μ μμ μμλ ν΄λ¦ μ΄λ²€νΈλ₯Ό κΈ°λ€λ¦½λλ€.
2.
onAddStationHandlerΒ :μ΄λ²€νΈκ° λ°μνμ λ μ€νλ μ½λ. μμ μμλ onAddStationHandler() ν¨μλ₯Ό μ¬μ©ν©λλ€. μ΄ λ κ΄νΈλ₯Ό μλ΅νλ μ΄μ λ κ΄νΈλ₯Ό μ¬μ©νλ©΄ (μ΄λ²€νΈκ° λ°μν λκ° μλλΌ) μ΄λ²€νΈκ° λ°μΈλ© λ λ ν¨μλ₯Ό νΈμΆνλΌλ μλ―Έκ° λκΈ° λλ¬Έμ
λλ€.
#맀κ°λ³μλ₯Ό κ°μ§ μ΄λ²€νΈ νΈλ€λ¬μ 리μ€λ
μ΄λ²€νΈ νΈλ€λ¬μ μ§μ λ ν¨μμ κ΄νΈκ° μλ κ²½μ° ν΄λΉ ν¨μλ λ°μΈλ© λλ μκ° μ¦μ μ€νλ©λλ€. μ¦ ν¨μκ° μ΄λ²€νΈλ₯Ό κΈ°λ€λ¦¬μ§ μκ³ λ°λ‘ μ€νλμ΄, μμΉ μλ λμμ μΌμΌν΅λλ€. κ·Έλμ 맀κ°λ³μλ₯Ό μ λ¬νκ³ μΆλ€λ©΄ μλμ κ°μ ννμΒ μ΅λͺ
ν¨μ(anonymous function)Β (opens new window)λ₯Ό μ΄μ©ν΄μΌ ν©λλ€.
$stationAddButton.addEventListener('blur', function() {
// μ΅λͺ
ν¨μλ λ λ²μ§Έ 맀κ°λ³μμ²λΌ λμνλ©°, μ΄λ¦μ κ°μ§ ν¨μλ₯Ό λλ¬ μΌλ€.
onAddStationHandler(name);
})
JavaScript
볡μ¬
μ΅λͺ
ν¨μλ κ΄νΈλ₯Ό κ°μ§κ³ μκΈ°λ νμ§λ§ μ΄λ²€νΈκ° λ°μνμ λλ§ μ€νλ©λλ€. μ΄λ¦μ κ°μ§ ν¨μλ μ΅λͺ
ν¨μκ° νΈμΆλ λλ§ μ€νλλ©°, 맀κ°λ³μλ₯Ό μ¬μ©ν μ μκ² λ©λλ€.
3. μ΄λ²€νΈμ νλ¦κ³Ό μ μ΄
λλΆλΆμ HTML μμλ λ€λ₯Έ μμμ λ΄λΆμ μ€μ²©λ©λλ€. κ·Έλμ λ²νΌμ λ§μ°μ€λ₯Ό κ°μ Έκ°κ±°λ ν΄λ¦νλ©΄, κ·Έ λΆλͺ¨ μμ νΉμ μμμμ λν κ°μ΄ ν΄λ¦ν κ²κ³Ό κ°μ λμμ μΌμΌν€λλ°μ. λ§ν¬λ₯Ό κ°μ§κ³ μλ λͺ©λ‘μ μλ‘ λ€μ΄λ³΄κ² μ΅λλ€. μ΄ λ§ν¬λ₯Ό ν΄λ¦νλ©΄ μλ°μ€ν¬λ¦½νΈλΒ <a>Β μμμ μ΄λ²€νΈλ₯Ό λ°μμν΄κ³Ό λμμΒ <a>Β λ₯Ό ν¬ν¨νκ³ μλ λ€λ₯Έ λͺ¨λ μμλ€μλ λμΌν μ΄λ²€νΈλ₯Ό λ°μμν΅λλ€. μ΄λ²€νΈκ° λ°μνλ μμλ₯Ό μ΄λ²€νΈ νλ¦(event flow)μ΄λΌκ³ νλ©°, μ΄λ²€νΈκ° νλ₯΄λ λ°©μμ λ€μμ λ κ°μ§κ° μμ΅λλ€.
μ΄λ²€νΈ λ²λΈλ§: μ΄λ²€νΈκ° μ¬μ©μμ λμμ μ§μ μ μΌλ‘ μν₯μ λ°μ λ
Έλλ‘λΆν° λ°κΉ₯μͺ½μΌλ‘ μ νλμ΄ λκ°λ λ°©μ.Β
μ΄λ²€νΈ μΊ‘μ³λ§: μ΄λ²€νΈκ° κ°μ₯ λ°κΉ₯μͺ½μ λ
Έλλ‘λΆν° μμν΄μ μμͺ½μΌλ‘ μ νλμ΄ λ€μ΄μ€λ λ°©μ
μμ κ°μ μ΄λ²€νΈμ νλ¦μΌλ‘ μΈν΄ λ΄κ° μνλ λμμ΄μΈμλ μ΄λ²€νΈκ° νΌμ Έλκ°μ μμμΉ λͺ»ν μ€λ₯κ° λ°μνλ κ²½μ°κ° μμ΅λλ€. μ΄ λ μ΄λ²€νΈ κ°μ²΄κ° μ 곡ν΄μ£Όλ λ©μλλ₯Ό μ΄μ©νλ©΄ λ¬Έμ λ₯Ό 미리 μλ°©ν μ μμ΅λλ€.
Event κ°μ²΄
Event κ°μ²΄λ μ΄λ²€νΈκ° λ°μνμ λΒ μ΄λ²€νΈλ₯Ό λ°μμν¨ μμμΒ λ°μν μ΄λ²€νΈμ λν μ 보λ₯Ό μ 곡ν©λλ€. Event κ°μ²΄κ° μ 곡νλ μ 보λ λ€μκ³Ό κ°μ΅λλ€.
β’
μ΄λ²€νΈλ₯Ό λ°μμν¨ μμ
β’
keypress μ΄λ²€νΈκ° μ΄λ€ ν€μ μν΄ λ°μνλμ§μλν μ 보
β’
μ¬μ©μκ° μ΄λ€ μμλ₯Ό ν΄λ¦ν΄μ click μ΄λ²€νΈκ° λ°μνλμ§μ λν μ 보
μ΄λ²€νΈ κ°μ²΄λ μ΄λ²€νΈ 리μ€λλ‘ μ§μ λ ν¨μμ μλμΌλ‘ μ λ¬λ©λλ€.
Show All
Search
Show All
Search
λΈλΌμ°μ μ μ½μμ°½μ ν€κ³ ,Β eventΒ λ²νΌμ ν΄λ¦νμ λμ,Β textλ₯Ό μ
λ ₯νμ λ μ½μ μ°½μ κΈ°λ‘λλ event κ°μ²΄λ₯Ό νμΈν΄λ³΄μΈμ.
4. μ΄λ²€νΈ μμ
μ΄λ²€νΈ 리μ€λλ₯Ό μ§μ νλ μμκ° λ§μΌλ©΄ λ§μμλ‘ νμ΄μ§μ μ€ν μλλ λλ €μ§λλ€. κ·Έλμ ν¨μ¨μ μΌλ‘ μ΄λ²€νΈλ₯Ό κ΄λ¦¬νκΈ° μν΄μ μ΄λ²€νΈμ νλ¦μ μ΄μ©ν©λλ€. μ΄λ²€νΈλ μ΄λ²€νΈκ° λ°μν μ리먼νΈλ₯Ό ν¬ν¨νκ³ μλ λΆλͺ¨ μμμλ μν₯μ λ―ΈμΉκΈ° λλ¬Έμ μμ μμλ₯Ό ν¬ν¨ν μ μλ μμμ μ΄λ²€νΈ νΈλ€λ¬λ₯Ό μ§μ νκ³ μ΄λ²€νΈμ νλ¦μ μ΄μ©ν΄ λ€λ£° μ μμ΅λλ€. μ¦, μ΄λ²€νΈ 리μ€λκ° μ€νν μμ
μ μμμ λΆλͺ¨ μμμκ²Β μμ(Delegation)ν μ μλ€λ κ²μ
λλ€.
μ΄λ²€νΈ μμμ μ₯μ λ€
β’
λμ μΌλ‘ μΆκ°λλ μμλ€μλ λμνλ€.
β¦
DOMνΈλ¦¬μ μλ‘μ΄ μμλ₯Ό μΆκ°νλλΌλ μ΄λ²€νΈμ λν μ²λ¦¬λ λΆλͺ¨ μμμκ² μμλμκΈ° λλ¬Έμ μλ‘μ΄ μμμ μ΄λ²€νΈ νΈλ€λ¬λ₯Ό λ€μ μ§μ ν νμκ° μλ€.
β’
μ½λμ κ°κ²°
β¦
μ΄ κΈ°λ²μ μ΄μ©νλ©΄ ν¨μλ₯Ό λ§μ΄ μμ±ν νμκ° μμΌλ©° DOMκ³Ό μ½λκ°μ μ°κ²°μ΄ κ°μν΄μ Έ κ²°κ³Όμ μΌλ‘ μ μ§λ³΄μμ λμμ΄ λλ€.
<ul id="parent-list">
<li id="item1">Item 1</li>
<li id="item2">Item 2</li>
<li id="item3">Item 3</li>
</ul>
JavaScript
볡μ¬
//μμ λ
Έλμ μ΄λ²€νΈ μ€μ
document.getElementById("parent-list").addEventListener("click", function (e) {
if (e.target && e.target.nodeName == "LI") {
console.log(`List item ${e.target.id} was clicked!`);
}
});
JavaScript
볡μ¬
μ 리
β’
μ΄λ²€νΈλ λΈλΌμ°μ κ°(λ²νΌμ ν΄λ¦ λ±) μ΄λ€ μΌμ΄ λ°μνμμ μ리λ μλ¨μ΄λ€.
β’
λ°μΈλ©μ μ΄λ€ μμμμ μ΄λ²€νΈκ° λ°μνμ λ, μ΄λ»κ² μ²λ¦¬ν κ²μΈμ§λ₯Ό μ μνλ κ³Όμ μ΄λ€.
β’
μμμμ μ΄λ²€νΈκ° λ°μνλ©΄ μλ°μ€ν¬λ¦½νΈ ν¨μκ° νΈμΆλλ€. μ΄ ν¨μκ° μΉ νμ΄μ§μ λ³νλ₯Ό μ€μ, μ¬μ©μμ νλμ λ°μμ 보μμΌλ‘μ¨ μΈν°λν°λΈν κ²½νμ λ§λ λ€.
β’
μ΄λ²€νΈ μ νλ₯Ό μ΄μ©νμ¬ νΉμ μμμ λͺ¨λ μμ μμμμ λ°μν μ΄λ²€νΈλ₯Ό λͺ¨λν°λ§ ν μ μλ€.
β’
μ΄λ²€νΈ μμμ μ΄μ©νλ©΄ λμ μΌλ‘ μΆκ°λλ μμμλ μλμ μΌλ‘ μ΄λ²€νΈκ° λ°μΈλ© λλλ‘ ν μ μλ€.