[JavaScript] ์ด๋ฒคํธ ํ๋ฆ๊ณผ addEventListener ์ ์บก์ณ ๋ฆฌ์ค๋ ์ ๋ฒ๋ธ ๋ฆฌ์คํฐ์ ๋ฐ๋ฅธ ํ๋ฆ
๐ท ์ด๋ฒคํธ ํ๋ฆ์ด๋?
๋ฌธ์ ๋ด๋ถ์ ์๋ฆฌ๋จผํธ๋ค์ ๊ณ์ธต์ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๊ธฐ ๋๋ฌธ์๋ฐ์ํ๊ฒ ๋๋ค.
ํ๋์ ์๋ฆฌ๋จผํธ์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๊ณ์ธต์ ๋ฐ๋ผ ์ฐ์์ ์ผ๋ก ์ด๋ฒคํธ ํ๋ฆ์ด ๋ฐ์ํ๊ฒ ๋๋ค.
๐น ํ๋ฆ 3๋จ๊ณ
1๏ธโฃ ์บก์ณ ๋จ๊ณ : window ๋ถํฐ ๋ชจ๋ DOM๊ฐ์ฒด๋ฅผ ์ฐจ๋ก๋๋ก ๊ฑฐ์ณ ํ์ผ์ ์ด๋ฒคํธ๊ฐ ์ ๋ฌ๋๋ ๊ณผ์
2๏ธโฃํ๊น ๋จ๊ณ : ์ด๋ฒคํธ๊ฐ ์ค์ ์์์๊ฒ ์ ๋ฌ
3๏ธโฃ๋ฒ๋ธ๋ง ๋จ๊ณ : ํ๊ฒ ๋ถํฐ ์ค๊ฐ์ ๋ชจ๋ DOM ๊ฐ์ฒด๋ฅผ ๊ฑฐ์ณ window ๊ฐ์ฒด์ ์ด๋ฒคํธ๊ฐ ์ ๋ฌ๋๋ ๊ณผ์
๐ก์บก์ณ ๋จ๊ณ์ ๋ฒ๋ธ๋ง ๋จ๊ณ์์ ๊ฒจ์ณ๊ฐ๋ DOM๊ฐ์ฒด๋ค์ ํด๋น ์ด๋ฒคํธ์ addEventListener ์์ฑ์ ๋ฐ๋ผ
๊ฑฐ์ณ๊ฐ๋ ๋ชจ๋ DOM ๊ฐ์ฒด๋ค์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์คํํ๋ค.
๊ธฐ๋ณธ๊ฐ์ ๋ฒ๋ธ๋ง ๋จ๊ณ์ด๋ฉฐ , ํ๊น ๊ฐ์ฒด๋ถํฐ window ๊ฐ์ฒด ์์๋ก ์ด๋ฒคํธ ๋ฆฌ์ค๋๊ฐ ๋ฐ์๋๋ค.
ํ๋ฆ์ ๋ณผ ์ ์๋ ์์
<div onclick="alert('์ฒซ๋ฒ์งธ div')">
1
<div onclick="alert('๋๋ฒ์งธ div')">
2
<div onclick="alert('์ธ๋ฒ์งธ div')">3</div>
</div>
</div>
๐ ๊ธฐ๋ณธ๊ฐ์ผ๋ก๋ ๋ฒ๋ธ๋ง ๋จ๊ณ (false) ์ด๋ฏ๋ก 3์ ํด๋ฆญํ๋ฉด 3 2 1 ์์ผ๋ก ๊ฐ์ฒด์ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ฐ์
๐ท addEventListener ๋
์คํฌ๋ฆฝํธ ์ธ์ด๋ฅผ ํตํด ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐ ํด์ฃผ๋ ํจ์์ด๋ค.
addEventListener(’์ด๋ฒคํธType’,์ด๋ฒคํธ ํธ๋ค๋ฌ,[capture ์ฌ์ฉ์ฌ๋ถ])
์ด๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ callBack ํจ์๋ก ()์์ด ํจ์ ์ด๋ฆ๋ง ์ ์ํ๋ค.
capture๋ ํ์ ์์ ์ฌ์ฉํ๋ฉฐ, ์ด๋ฒคํธ ํ๋ฆ์ ๋ฆฌ์ค๋๋ฅผ ๋ฐ์ํ ๋จ๊ณ๋ฅผ ์ค์ ํ๋ค.
true ⇒ ์บก์ณ ๋จ๊ณ
false ⇒ ๋ฒ๋ธ๋ง ๋จ๊ณ(๊ธฐ๋ณธ๊ฐ)
addEventListener ์ ์ฉ ์์
<script>
onload = () => {
let p = document.getElementById("text");
p.addEventListener("mouseover", over);
p.addEventListener("mouseout", out);
};
function over() {
this.style.color = "red";
}
function out() {
this.style.color = "black";
}
</script>
<body>
<p id="text">๋ง์ฐ์ค ์ฌ๋ฆฌ๋ฉด textColor change</p>
</h3></pre>
</body>
๐ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆฌ๋ฉด over ํจ์๊ฐ ์คํ
๋ง์ฐ์ค๋ฅผ ๋ด๋ฆฌ๋ฉด out ํจ์๊ฐ ์คํ
๐ค addEventListener ์ ์ธ๋ฒ์งธ ์ธ์์ ๋ฐ๋ผ์ ๋ฆฌ์ค๋ ๋ฐ์?
์์์ ๋งํ๋ค์ํผ addEventListener ์ ์ธ๋ฒ์งธ ์ธ์๋ ์ด๋ฒคํธ ํ๋ฆ์ ๋ฆฌ์ค๋๋ฅผ ๋ฐ์ํ ๋จ๊ณ๋ฅผ ์ค์ ํ๋ค.
์ ๋ ฅํ์ง์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ false๊ฐ ๋ค์ด๊ฐ๋ฉฐ , ๋ฒ๋ธ๋ง ๋จ๊ณ์์ ๊ฑฐ์ณ๊ฐ๋ DOM๊ฐ์ฒด๋ค์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๊ฐ ์คํ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด true๋ฅผ ์ค๋ค๋ฉด ์ด๋ป๊ฒ ๋ ์ง ์ดํด ๋ณด์.
์ด๋ฒคํธ ๋ฆฌ์คํฐ ๋ฐ์ ๋จ๊ณ : true
- ํด๋น ์๋ฆฌ๋จผํธ๋ฅผ ํด๋ฆญํ ์ ๋ฐ์ํ๋ ๋ฆฌ์ค๋๋ก ์ต๋ช ํจ์๋ฅผ ํตํ์ฌ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์์ฑ
- ์คํ ๋จ๊ณ ํ๋ฆ์ true๋ก ์ง์
<div id="first">
1
<div id="second">
2
<div id="third">3</div>
</div>
</div>
<script>
let first = document.getElementById("first");
let second = document.getElementById("second");
let third = document.getElementById("third");
first.addEventListener("click", () => {
alert("first");
},true);
second.addEventListener("click", () => {
alert("second");
},true);
third.addEventListener("click", () => {
alert("third");
},true);
</script>
๊ฒฐ๊ณผ