๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ—‚ WIL/๐Ÿ“ JavaScript

๐Ÿ’ก ํ‰์†Œ๋Œ€๋กœ e.target.value๋ฅผ ์ด์šฉํ–ˆ๋Š”๋ฐ, ์š”์†Œ๊ฐ’์„ ๊ฐ€์ ธ์˜ค์ง€ ๋ชปํ•œ๋‹ค..? - ํŒ€ ํ”„๋กœ์ ํŠธ

by nalong 2022. 8. 11.

๐Ÿ“… ๋ณธ ๊ธ€์€  2022๋…„ 5์›” 12์ผ ๊ฐœ์ธgithub ์— ์ž‘์„ฑ๋œ ๊ธ€์ž…๋‹ˆ๋‹ค.

๐Ÿš€ currentTarget vs target

2์ฐจ ํŒ€ํ”„๋กœ์ ํŠธ์—์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์ ์ด๋‹ค...!! ํ‰์†Œ์ฒ˜๋Ÿผ e.target.value ๋ฅผ ์ด์šฉํ•ด์„œ ํด๋ฆญํ•œ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ฌ๋ ค๊ณ  ํ–ˆ์œผ๋‚˜, undefined ์ด ์ถœ๋ ฅ๋˜์—ˆ๋‹ค. ๋‹คํ–‰ํžˆ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด์„œ ์•Œ์•„๋‚ธ e.currentTarget.value ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ˆ ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค.

 

๊ทธ๋Ÿผ event target ์™€ currentTarget ์ฐจ์ด์ ์€ ๋ฌด์—‡์ผ๊นŒ..?

 

โœ…  event.target vs event.currentTarget

๋ธ”๋กœ๊ทธ์— ๊ธฐ์žฌ๋˜์—ˆ๋Š” ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์‹คํ–‰ํ•ด๋ณด์ž. (์ถœ์ฒ˜ ์•„๋ž˜์— ๊ธฐ์žฌ)

 

 <body>
    <tbody>
      <div class="green" style="width: 300px; height: 300px; background-color: green;">
          <div class="yellow" style="width: 200px; height: 200px; background-color: yellow;"></div>
      </div>
      </tr>
    </tbody>
    <script>
        const green = document.querySelector('.green');
        green.addEventListener('click',function(e){
            console.log("currentTarget : ",e.currentTarget);
            console.log("Target : ",e.target);
        })
    </script>
  </body>

 

์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , yellow์„ ํด๋ฆญํ•˜์˜€๋•Œ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์˜จ๋‹ค.
green ์ด๋ผ๋Š” className ์„ ๊ฐ€์ง„ div์— ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์„ค์ •ํ•˜์˜€๋Š”๋ฐ, currentTarget ์€ ์ž๊ธฐ์ž์‹ (์ด๋ฒคํŠธ๊ฐ€ ๋‹ฌ๋ ค์žˆ๋Š” ์š”์†Œ)๊ณผ ์ž์‹์š”์†Œ๊นŒ์ง€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„, target ๋Š” ์ž์‹์š”์†Œ(๋‚ด๊ฐ€ ๋ˆ„๋ฅธ ๋Œ€์ƒ!-> yellow)๋งŒ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

 

๊ทธ๋Ÿผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋ฅผ ์˜ˆ์‹œ๋กœ ๋“ค์–ด๋ณด์ž. ์ผ๋‹จ ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์„œ ์ž„์˜๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค.

 

const SurveyContainer = () => {
  const handleClickAnswer = (e) => {
    console.log('e.target.value', e.target.value);
    console.log('e.currentTarget.value', e.currentTarget.value);
  };
  return (
    <>
      <div>
        <button onClick={handleClickAnswer} value={'button์— value'}>
          <span>click</span>
        </button>
      </div>
    </>
  );
};

 

e.target.value ๋ฅผ ํ–ˆ์„ ๋•Œ undefined ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค! ์™œ๋ƒํ•˜๋ฉด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋‹ฌ๋ ค์žˆ๋Š” button ์— value ๊ฐ’์„ ์ง€์ •ํ–ˆ๋Š”๋ฐ, e.target.value ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๋‚ด๊ฐ€ ํด๋ฆญํ•œ ๋Œ€์ƒ์ธ span์˜ value ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋ ค๊ณ  ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค..(๋ฌผ๋ก  span ์—๋Š” value ๊ฐ’์„ ์“ฐ์ง€ ์•Š๋Š”๋‹ค..!)

 

โš ๏ธ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ •๋ฆฌํ•˜๋ฉด

โœ…  event.target : ๋‚ด๊ฐ€ ๋ˆ„๋ฅธ ๋Œ€์ƒ! , ์ด๋ฒคํŠธ๊ฐ€ ๋‹ฌ๋ ค์žˆ๋Š” ์š”์†Œ์˜ ์ž์‹ ์š”์†Œ.
โœ…  event.currentTarget : ์ด๋ฒคํŠธ๊ฐ€ ๋‹ฌ๋ ค ์žˆ๋Š” ์š”์†Œ!

์ถ”๊ฐ€์ ์œผ๋กœ MDN ์— ์žˆ๋Š” Event.currentTarget ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ฝ์–ด๋ณด๋ฉด, ๋™์ผํ•œ ์ด๋ฒคํŠธํ•ธ๋“ค๋Ÿฌ๋ฅผ ์—ฌ๋Ÿฌ ์š”์†Œ์— ์‚ฌ์šฉํ•  ๋•Œ ํšจ๊ณผ์ ์ด๋ผ๊ณ  ํ•œ๋‹ค!

๐Ÿ–‡ Reference

https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget
https://kyounghwan01.github.io/blog/JS/JSbasic/target-currentTarget/

'๐Ÿ—‚ WIL > ๐Ÿ“ JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Polyfill์ด๋ž€?  (1) 2024.12.08
CustomEvent  (3) 2024.11.10
๐Ÿ’ก axios await/async vs then  (0) 2022.08.11
โœ๏ธ ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น  (0) 2022.08.10
๐Ÿ’ก ์–•์€ ๋ณต์‚ฌ, ๊นŠ์€ ๋ณต์‚ฌ  (0) 2022.08.10