JavaScript

[JavaScript] ์ด๋ฒคํŠธ ํ๋ฆ„๊ณผ addEventListener ์˜ ์บก์ณ ๋ฆฌ์Šค๋„ˆ ์™€ ๋ฒ„๋ธ” ๋ฆฌ์Šคํ„ฐ์— ๋”ฐ๋ฅธ ํ๋ฆ„

joheamin 2025. 1. 31. 16:19

๐Ÿ”ท ์ด๋ฒคํŠธ ํ๋ฆ„์ด๋ž€?

๋ฌธ์„œ ๋‚ด๋ถ€์— ์—˜๋ฆฌ๋จผํŠธ๋“ค์€ ๊ณ„์ธต์  ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

ํ•˜๋‚˜์˜ ์—˜๋ฆฌ๋จผํŠธ์—์„œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ๊ณ„์ธต์„ ๋”ฐ๋ผ ์—ฐ์‡„์ ์œผ๋กœ ์ด๋ฒคํŠธ ํ๋ฆ„์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

 ๐Ÿ”น ํ๋ฆ„ 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>

 

๊ฒฐ๊ณผ