๐ DOM ์์ฑ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ฐ๊ฒฐํ๊ธฐ
์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ DOM์์์ ์ฐ๊ฒฐํ ๋ ๋ณดํต 2๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋๋ฐ, ์ฒซ ๋ฒ์งธ๋ก on
์์ฑ๊ณผ, ๋๋ฒ์งธ๋ addEventListener
์ด๋ค. ์ ์์ ๊ฒฝ์ฐ ๋น ๋ฅด์ง๋ง ์ง์ ๋ถํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ๋งํ๋ค. ์๋ฅผ ๋ค์ด ondblclick
, onmouseover
, onblur
, onfocus
์์ฑ์ด ์๋ค.
const button = document.querySelector("button");
button.onclick = () => {
console.log("Click managed using onclick property");
}
์ด๋ฐ ํด๊ฒฐ์ฑ
์ ์ ๋์ํ๋๋ผ๋ ์ผ๋ฐ์ ์ผ๋ก ๋์ ๊ดํ์ผ๋ก ๊ด์ฃผ ๋๋๋ฐ, ๊ทธ ์ด์ ๋ ์์ฑ์ ์ฌ์ฉํ๋ฉด ํ๋ฒ์ ํ๋์ ํธ๋ค๋ฌ๋ง ์ฐ๊ฒฐํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ์ฝ๋๊ฐ onclick
ํธ๋ค๋ฌ๋ฅผ ๋ฎ์ด์ฐ๋ฉด ์๋ ํธ๋ค๋ฌ๋ ์์ํ ์์ค๋๋ค.
๊ทธ๋์ ๋ ๋์ ์ ๊ทผ ๋ฐฉ์์ธ addEventListener
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค. addEventListener
์ ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ ์ด๋ฒคํธ ํ์
์ด๊ณ , ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ ์ฝ๋ฐฑ์ด๋ฉฐ ์ด๋ฒคํธ๊ฐ ํธ๋ฆฌ๊ฑฐ ๋ ๋ ํธ์ถ๋๋ค. ๋ค์ ์ฝ๋์ฒ๋ผ ๋ชจ๋ ํธ๋ค๋ฌ๋ฅผ ์ฐ๊ฒฐ ํ ์ ์๋ค.
const button = document.querySelector("button")
const firstHandler = () => {
console.log("First Handler");
}
const secondHandler = () => {
console.log("Second Handler");
}
button.addEventListener("click", firstHandler)
button.addEventListener("click", secondHandler)
๋์๊ฐ DOM
์ ์์๊ฐ ๋ ์ด์ ์กด์ฌํ์ง ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ฐฉ์งํ๊ณ ์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ญ์ ํด์ผ ํ๋๋ฐ, ์ด๋ removeEventListener
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค. ๋ค์ ์ฝ๋์์ ๊ฐ์ฅ ์ค์ํ ์ ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ ๊ฑฐํ๋ ค๋ฉด removeEventListener
๋ฉ์๋์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํ ์ ์๋๋ก ์ด์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์งํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
const button = document.querySelector("button")
const firstHandler = () => {
console.log("First Handler");
}
const secondHandler = () => {
console.log("Second Handler");
}
button.addEventListener("click", firstHandler)
button.addEventListener("click", secondHandler)
window.setTimeout(() => {
button.removeEventListener('click', firstHandler)
button.removeEventListener('click', secondHandler)
console.log("Removed Event Handlers");
}, 1000)
Reference
๋๊ธ