DevLog

TIL(20210706) - onclick / addEventListener ๋ณธ๋ฌธ

๐Ÿค” TIL(Today I Learned)

TIL(20210706) - onclick / addEventListener

Seungjae Lee 2021. 7. 6. 16:57

๐ŸŽ  Daily

  • ์ด๋ฒคํŠธ ๊ฐ์ฒด ํ•™์Šต
  • DOM์œผ๋กœ HTML ์กฐ์ž‘ํ•˜๊ธฐ

๐Ÿค”  Learned

onclick์— ์ง์ ‘ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ๊ณผ addEventListener์˜ ์ฐจ์ด


onclick 

document.getElementById('test').onclick = () => {
    alert('hello! I'm onclick');
}


addEventListener 

document.getElementById('test').addEventListener('click',()=>{
    alert('hello! I'm addEventListener');
},false);โ€‹

๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ addEventListener ๋ฐฉ๋ฒ•์„ ์“ฐ๋Š” ๊ฒƒ์ด ์žฅ์ ์ด ๋” ๋งŽ๋‹ค.



addEventListener ์žฅ์   :   

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด๋ฒคํŠธ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

var element = document.getElementById('Test');
element.onclick = function () { alert('Test #1'); };
element.onclick = function () { alert('Test #2'); };

์œ„์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ onClick ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ์‹ค์ œ๋กœ element๋ฅผ 'ํด๋ฆญ'ํ•˜๋ฉด 'Test #2'๋งŒ ๋ณด์ผ ๊ฒƒ์ด๋‹ค.

์ด์ฒ˜๋Ÿผ onClick ๋ฉ”์„œ๋“œ๋Š” ์ฒซ ๋ฒˆ์งธ ์ด๋ฒคํŠธ๋ฅผ ๋‘ ๋ฒˆ์งธ ์ด๋ฒคํŠธ๊ฐ€ overwrite ํ•จ์œผ๋กœ์จ ์ฒซ ๋ฒˆ์งธ ์ด๋ฒคํŠธ('Test #1')๊ฐ€ ๊ตฌํ˜„๋˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•œ๋‹ค.

 

element.addEventListener('click', function() {alert('Test #1')}, false);
 
element.addEventListener('click', function() {alert('Test #2')}, false)

ํ•˜์ง€๋งŒ AddEventListener๋Š” ๋‘ ์ด๋ฒคํŠธ๊ฐ€ ์ „๋ถ€ ๊ตฌํ˜„๋œ๋‹ค. 



addEventListener ์žฅ์  :   

bubbling, capturing์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

addEventListener("type", ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ(ํ•จ์ˆ˜), false(๋ฒ„๋ธ”๋ง) / true(์บก์ณ๋ง) ) - default ๊ฐ’์€ false(๋ฒ„๋ธ”๋ง).

addEventListener('click', functionName, false);โ€‹

Onclick ์žฅ์   : 

์šฐ์„  ๋ธŒ๋ผ์šฐ์ €์˜ ํ˜ธํ™˜์„ฑ ๋ฉด์—์„œ, Onclick ๋ฉ”์„œ๋“œ๋Š” ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์™€ ๋ฒ„์ „์—์„œ ํ˜ธํ™˜๋˜๋Š”๋ฐ ๋น„ํ•ด
AddEventListener๋Š” IE 6,7,8 ์—์„œ๋Š” ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค.
๊ตฌ ๋ฒ„์ „์˜ IE์—์„œ๋„ ๋™์ž‘
ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๊ฑฐ๋‚˜, ํ˜ธํ™˜์„ฑ์— ์‹ ๊ฒฝ ์“ฐ๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด OnClick ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.


<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>์ด๋ฒคํŠธ ๊ฐ์ฒด</title>
  </head>
  <body>
    <button>์•„๋ฉ”๋ฆฌ์นด๋…ธ</button>
    <button>์นดํŽ˜๋ผ๋–ผ</button>
    <script>
      let menus = document.querySelectorAll("button"); //๋ชจ๋“  ๋ฒ„ํŠผ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

      let btnAmericano = menus[0];
      let btnCaffelatte = menus[1];

      btnAmericano.onclick = handleClick;
      btnCaffelatte.onclick = handleClick; // ์ด์ƒ์œผ๋กœ for ๋ฌธ์œผ๋กœ ์ถฉ๋ถ„ํžˆ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.
      btnAmericano.addEventListener("click", eventClick);
      btnCaffelatte.addEventListener("click", eventClick);

      function handleClick() {
        // ์•„๋ž˜์˜ ๋นˆ ์นธ(____)์„ ์ฑ„์šฐ์„ธ์š”.
        let currentMenu = event.target.textContent; // TODO
        console.log(currentMenu + "๋ฅผ ํด๋ฆญํ•˜์…จ์Šต๋‹ˆ๋‹ค.(onclick)");
      }
      function eventClick() {
        let currentMenu = event.target.textContent; // TODO
        console.log(currentMenu + "๋ฅผ ํด๋ฆญํ•˜์…จ์Šต๋‹ˆ๋‹ค.(eventListener)");
      }
    </script>
  </body>
</html>โ€‹

 

๐ŸŒˆ  Tomorrow

  • ๊ณ ์ฐจํ•จ์ˆ˜
  • ๊ณ„ํšํ‘œ๋Œ€๋กœ ์ง„ํ–‰ํ•˜๊ธฐ 

'๐Ÿค” TIL(Today I Learned)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

TIL(20210708) - JSX๊ทœ์น™  (0) 2021.07.08
TIL(20210707) - ๊ณ ์ฐจํ•จ์ˆ˜  (0) 2021.07.07
TIL(20210705) - DOM  (0) 2021.07.06
TIL(20210703)  (0) 2021.07.03
TIL(20210702) - Spread/Rest, ๊ตฌ์กฐ๋ถ„ํ•ด(Destructing)  (0) 2021.07.02
Comments