Session 5_2. Dom + Event

๊น€๋ฏผ์žฌยท2021๋…„ 8์›” 22์ผ
0

TIL, WeCode, Courseย 

๋ชฉ๋ก ๋ณด๊ธฐ
20/48
post-thumbnail
post-custom-banner

*๐Ÿ”Study Keyword :

  • HTML๊ณผ JavaScript๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ๐Ÿ”‘DOM์— ๋Œ€ํ•ด์„œ ๋ฐฐ์šฐ๊ณ  HTML๊ณผ JavaScript๊ณผ ๐Ÿ”‘์–ด๋–ป๊ฒŒ ์—ฐ๋™๋˜์–ด ๋™์ž‘ํ•˜๋Š”์ง€ ๊ทธ ๊ณผ์ •์„ ์‚ดํŽด๋ณด์ž

1. ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ DOM

  • HTML๊ณผ CSS ๊ด€๊ณ„, HTML์—์„œ CSS๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

    • HTML์—์„œ CSS๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• 3๊ฐ€์ง€
    1. Inline style ์ ์šฉ
    2. <style>...</style> ์ ์šฉ
    3. .css, ์œ ์ง€๋ณด์ˆ˜ ์ธก๋ฉด์—์„œ 3๋ฒˆ์ด ์ตœ๊ณ ..๐Ÿ‘
  • JavaScript๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ๋งŒ๋“  ์–ธ์–ด์ด๋‹ค.

    • Js์—๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• 2๊ฐ€์ง€
    1. <script>..</script>
    2. .js ์œ ์ง€๋ณด์ˆ˜ ์ธก๋ฉด์—์„œ 2๋ฒˆ ์ตœ๊ณ ..๐Ÿ‘
  • DOM์€ JavaScript์—์„œ ์œ„ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ HTML์„ ํ–ฅํ•˜๋Š” ํ™”์‚ดํ‘œ ๋ฐฉํ–ฅ์— ์กด์žฌํ•œ๋‹ค.
  • DOM์€ JavaScript๊ฐ€ HTML์„ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ๊ฑฐ์ณ์•ผํ•œ๋‹ค.
    -> ๋”ฐ๋ผ์„œ JavaScript๊ฐ€ HTML์„ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์ œ๊ณตํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ๋ฐ”๋กœ DOM์ด๋‹ค.
  • JavaScript๋Š” ์›น ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜๊ณ  ํŽ˜์ด์ง€๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ณ  ์ด๋ ‡๊ฒŒ ๋™์ ์ธ ์›นํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„  DOM์ด ํ•„์š”ํ•˜๋‹ค.
    -DOM์„ ํ†ตํ•ด์„œ ์›นํŽ˜์ด์ง€์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ  ์š”์†Œ ์ƒ์„ฑ, ๋‚ด์šฉ ์ถ”๊ฐ€, ํด๋ž˜์Šค ๋ถ€์—ฌ, ์Šคํƒ€์ผ ์ˆ˜์ • ๋“ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

-WHAT ISโ“

  • ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ(Document Object Model, DOM)์ด๋ž€ ์›น ํŽ˜์ด์ง€ ๋‚ด์˜ ๋ชจ๋“  ์ฝ˜ํ…์ธ (HTML)๋ฅผ ๊ณ„์ธตํ™”์‹œ์ผœ ๊ฐ์ฒด๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋ชจ๋ธ์„ ์˜๋ฏธํ•œ๋‹ค.
  • ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๋‹จ์–ด๋Š” ๐Ÿ‘‰๊ฐ์ฒด๋‹ค
<script>
// ๋ฐฐ๊ฒฝ์„ ํŒŒ๋ž€์ƒ‰์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ
document.body.style.background = 'blue'
</script>
  • JavaScript์˜ dot ์—ฐ์‚ฐ์ž . ๋Š” ๊ฐ์ฒด ๋‚ด์˜ ๋ฐ์ดํ„ฐ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๋Š” ๋ฌธ๋ฒ•์œผ๋กœ ์ฒซ ์‹œ์ž‘์ ์ธ document๋Š” ๊ฐ์ฒด์ด๋‹ค.
  • document ๊ฐ์ฒด๋Š” ํŽ˜์ด์ง€์˜ ๊ธฐ๋ณธ ์ง„์ž…์ ์œผ๋กœ document ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ html ์š”์†Œ๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ ํด๋ž˜์Šค๋ฅผ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ์Šคํƒ€์ผ์„ ๋ถ€์—ฌํ•˜๋Š” ๋“ฑ์˜ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
    ๐Ÿ™‹โ€โ™‚๏ธ? > JavaScript๋กœ HTML์˜ ๋ฌธ์„œ๋ฅผ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ดdocument ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜๋Š”๊ฑด ์•Œ๊ฒ ๋Š”๋ฐ CSS์˜ style์€ ์™œ ๋ฐ”๋€Œ์ฃต ?
    ๐Ÿ™†โ€โ™€๏ธ! > JavaScript๋กœ HTML์˜ document ์— ์ ‘๊ทผํ•˜์—ฌ ํƒœ๊ทธ์˜ style ์†์„ฑ์„ ๋ฐ”๊พธ๋ฉด ์Šคํƒ€์ผ ์ ์šฉ์‹œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ์ธ๋ผ์ธ ์Šคํƒ€์ผ์„ ์ˆ˜์ • ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์ฃต !

-DOM ๊ฐ์ฒด ํŠธ๋ฆฌ ๊ตฌ์กฐ

-DOM ๊ฐ์ฒด ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์‹œ๊ฐํ™”ํ•œ ์ž๋ฃŒ

  • HTML ํŠธ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ๊ฐ์ฒด์˜ ํ˜•ํƒœ์™€ ์œ ์‚ฌํ•˜๋‹ค
  • ๊ฐ๊ฐ์˜ HTML ํƒœ๊ทธ๋Š” ์š”์†Œ ๋…ธ๋“œ(element node) ํ˜น์€ ์š”์†Œ๋ผ๊ณ  ํ•˜๋ฉฐ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.
  • root ๋…ธ๋“œ์ธ html ์„ ๊ธฐ์ค€์œผ๋กœ head , body ๋ผ๋Š” ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์žˆ์œผ๋ฉฐ ํ˜•ํƒœ๊ฐ€ ๋งˆ์น˜ ๋‚˜๋ฌด ๊ฐ€์ง€(ํŠธ๋ฆฌ ๊ตฌ์กฐ)์™€ ๊ฐ™์ด ์ž์‹ ๋…ธ๋“œ๋“ค์„ ํ˜•์„ฑํ•˜๊ณ  ์žˆ๋‹ค.
<script>
const obj = {
  html : { 
    body : {
      div:  {
        div: {
          div: 1
          }
        }
      }
  }
}
obj.html.body.div.div.div
</script>
  • JavaScript๋Š” ์›นํŽ˜์ด์ง€์˜ HTML ๊ณ„์ธตํ™”์‹œ์ผœ ํŠธ๋ฆฌ๊ตฌ์กฐ๋กœ ๋งŒ๋“  ๊ฐ์ฒด ๋ชจ๋ธ์ธ DOM์œผ๋กœ ์›นํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜๊ณ  ํŽ˜์ด์ง€ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ DOM์€ ์ด์ฒ˜๋Ÿผ HTML๊ณผ JavaScript ์–ธ์–ด๋ฅผ ์„œ๋กœ ์ž‡๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ธฐ์œ„ํ•ด์„ ?

  • DOM์„ ํ†ตํ•ด ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ id๋‚˜ class, css ์ ‘๊ทผ์ž๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

-HOW TO USEโ•โ“

<script>
// ๋ฐฐ๊ฒฝ์„ ํŒŒ๋ž€์ƒ‰์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ
document.body.style.background = 'blue'
</script>
  • document.body ๋กœ body ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

-์š”์†Œ ๋…ธ๋“œ ์ ‘๊ทผ ํ•จ์ˆ˜ 5๊ฐ€์ง€

  • document ๋ผ๋Š” ์ง„์ž…์ ์—์„œ ์ถœ๋ฐœํ•˜์—ฌ ์›ํ•˜๋Š” ์š”์†Œ ๋…ธ๋“œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•๋“ค์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜๋“ค์ด ์กด์žฌํ•œ๋‹ค.
    -document.getElmentById()
    -document.getElementsByClassName()
    -document.getElementsByTagName()
    -document.querySelector()
    -document.querySelectorAll()
  • ์œ„ ํ•จ์ˆ˜๋“ค ๋ชจ๋‘ document ๊ฐ์ฒด์— ์žˆ๋Š” ํ•จ์ˆ˜๋กœ ์ด๋ฅผ ์‚ฌ์šฉํ•ด ์›ํ•˜๋Š” ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•จ์ˆ˜์˜ ์ข…๋ฅ˜ ์ค‘ 1>Elements์ธ ๊ฒฝ์šฐ์™€ 2> Element ์ธ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆ ์ง„๋‹ค.
<html>
<body>
	<main>
		<section>
			<article class='myClass'>์—ฌ๊ธฐ์— ์ ‘๊ทผํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค</article>
			<article class='myClass'>์—ฌ๊ธฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค</article>
			<article class='myClass'>์—ฌ๊ธฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค</article>
		</section>
	</main>
	<footer>
		<small id='contactEmail'>wecode@myemail.com</small>
	</footer>
</body>
</html>
  • 1>getElemntsByClassName์—์„ Elements๋กœ class ํ”„๋กœํผํ‹ฐ์ธ 'myClass'์— ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ๋ฅผ ๋‹ด์€ ์ปฌ๋ ‰์…˜์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
<script>
const my1stClass = document.getElementsByClassName('myClass')[0]
console.log(my1stClass.innerHTML) 
</script>
  • ๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ๊ฐœ ์ปฌ๋ ‰์…˜ ์ค‘ ์ฒซ ๋ฒˆ์งธ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด [0]์ฒ˜๋Ÿผ ๋ฐฐ์—ด์˜ ์š”์†Œ์— ์ ‘๊ทผํ•˜๋“ฏ ํ•˜๋‚˜๋ฅผ ํŠน์ •ํ•ด์•ผ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ฐ˜๋ฉด 2>getElementById์—์„œ Element๋Š” Id ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง„ 'contactEmail'๋Š” ๊ณ ์œ ํ•œ ๊ฐ’์ด๋ฏ€๋กœ ์ด๋ฅผ ํ†ตํ•ด Id ๊ฐ’์„ ๊ฐ€์ง„ํ•˜๋‚˜์˜ ์š”์†Œ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
<script>
const contactEmaill = document.getElementById('contactEmail');
contactEmaill.style.color = 'green'
</script>

2. ์ด๋ฒคํŠธ Event

  • ๋งŒ์•ฝ ์›น ํŽ˜์ด์ง€์—์„œ ์ด๋ฒคํŠธ๋Š” ์ •๋ง ๋งŽ์ด ์ผ์–ด๋‚˜๋Š”๋ฐ ์ด๋ฒคํŠธ๋ฅผ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํƒœ๊ทธ์— ์—ฐ๊ฒฐํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?

EX> ์ด๋ฏธ์ง€ ํด๋ฆญ์‹œ(์ด๋ฒคํŠธ) ์•Œ๋žŒ(ํ•จ์ˆ˜)์ด ๋ฐœ์ƒํ•˜๋„๋กํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?

  • STEP1> ์šฐ์„  ์ด๋ฏธ์ง€๋ฅผ ์ ‘๊ทผํ•จ์ˆ˜๋กœ ์ ‘๊ทผํ•ด์„œ ๊ฐ€์ ธ์˜จ๋‹ค.

    • addEventListener, ์ ‘๊ทผํ•จ์ˆ˜๋กœ ์ด๋ฒคํŠธ๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ๋†“๋Š”๋ฐ addEventListener๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • STEP2> ์–ด๋–ค ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒํ•  ๋•Œ ์‹คํ–‰ํ• ์ง€ addEventListener์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ž์— ๋ฌธ์ž์—ด๋กœ ์ „๋‹ฌํ•˜๋ฉฐ, ์‹คํ–‰์‹œํ‚ฌ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋ฅผ ์ด๋ฒคํŠธ ํ•จ์ˆ˜์— ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ ์ „๋‹ฌํ•ด์ค€๋‹ค.

    • ๐Ÿ™‹โ€ โ™€๏ธ ? > ๋‘๋ฒˆ ์งธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋กœ ๋ณดํ†ต ์ต๋ช…ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ด์œ ๋Š”์š”?
    • ๐Ÿ™†โ€โ™‚๏ธ !> ์ด๋ฏธ ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ(EX>์ด๋ฏธ์ง€ ํด๋ฆญ์‹œ)์— ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์ค€๋‹ค๋Š” ๊ฒƒ์„ ์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ํ˜ธ์ถœํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ ธ ๋ณดํ†ต ์ต๋ช…ํ•จ์ˆ˜๋ฅผ ๋„ฃ๋Š”๋‹ค.
    • ์ด๋Ÿฌํ•œ ์ต๋ช…ํ•จ์ˆ˜์ฒ˜๋Ÿผ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ๐Ÿ“›์ฃผ์˜๐Ÿ“›) ์ด๋•Œ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ๋ฐ”๋กœ ์ „๋‹ฌํ•˜์ง€ ์•Š๊ณ  ๋ถ„๋ฆฌํ•œ ๋’ค ์ „๋‹ฌ ํ•  ๋•Œ
    -ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ „๋‹ฌํ•˜๋ฉดโŒ
    -ํ•จ์ˆ˜์ •์˜โญ•๊นŒ์ง€๋งŒ ๋„ฃ์–ด์•ผํ•œ๋‹ค.
    -() ํ˜ธ์ถœ ์—ฐ์‚ฐ์ž์˜ ์˜๋ฏธ๋Š” ๋ณด์ž๋งˆ์ž ์‹คํ–‰ํ•˜๋ผ๋Š” ๋œป์ด์—ฌ์„œ ์ด๋ฒคํŠธ ๋ฐœ์ƒ(EX>ํด๋ฆญํ•˜๊ธฐ ์ „)์— ์ฝœ๋ฐฑํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ณ  ๋๋‚˜๋ฒ„๋ฆฐ๋‹ค.

-WHAT ISโ“

  • ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉ์ž ํ•˜๋Š” ํ–‰์œ„๋ฅผ ์ด๋ฒคํŠธ๋ผํ•˜๋ฉฐ ๊ฐ€๋ น 1>ํด๋ฆญํ•˜๊ฑฐ๋‚˜ 2>๊ฐ’์„ ๋„ฃ์–ด์„œ ์ œ์ถœ์„ ํ•˜๊ฑฐ๋‚˜ 3>๋งˆ์šฐ์Šค ์Šคํฌ๋กค์„ ํ•˜๋Š” ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
  • ์ด๋ฒคํŠธ๋Š” ๋ฌด์–ธ๊ฐ€ ์ผ์–ด๋‚ฌ๋‹ค๋Š” ์‹ ํ˜ธ๋กœ ํด๋ฆญ์ด๋‚˜ ์Šคํฌ๋กค ๋“ฑ์˜ ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ•ธ๋“ค๋Ÿฌ(handler)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋Š” ์‚ฌ์šฉ์ž์˜ ํ–‰๋™(์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š”)์— ์–ด๋–ป๊ฒŒ ๋ฐ˜์‘ํ• ์ง€๋ฅผ JavaScript
    ์ฝ”๋“œ๋กœ ๊ตฌํ˜„
    ํ•˜์—ฌ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
<script>
// ์ด๋ฒคํŠธ์™€ ํ•ธ๋“ค๋Ÿฌ ๋ฌธ๋ฒ•์˜ ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ
element.addEventListener(event, handler, [options]);
</script>
  • element ๋Š” ์ ‘๊ทผํ•  ์š”์†Œ๋ฅผ ์˜๋ฏธํ•ด ์˜ˆ๋ฅผ ๋“ค์–ด ์–ด๋–ค ๋ฒ„ํŠผ์ด ํด๋ฆญ ์‹œ ์ด๋ฅผ ํ•˜๋‚˜์˜ ์ด๋ฒคํŠธ๋กœ ์ง€์ •ํ•˜๊ธธ ์›ํ•˜๋ฉด ๋ฒ„ํŠผ์ด ์š”์†Œ์— ํ•ด๋‹นํ•œ๋‹ค.
    ํ•ด๋‹น ์š”์†Œ๋Š” getElementsByClassName, getElementbyId, querySelector ๋“ฑ์˜ ์ ‘๊ทผ์ž ํ•จ์ˆ˜๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • addEventListener ๋Š” ํŠน๋ณ„ํ•œ ๋ฉ”์„œ๋“œ๋กœ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋‹ค.
    ๋ฉ”์„œ๋“œ ์ด๋ฆ„์ฒ˜๋Ÿผ ์–ด๋–ค ์ด๋ฒคํŠธ๊ฐ€ ์ผ์–ด๋‚˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.
<html>
<body>
<img id='appleImage' alt='์‚ฌ๊ณผ' src='apple.png'>
<button class="mySelectedElement">๋ฉ‹์ง„ ๋ฒ„ํŠผ</button>
</body>
<script>
const selectElement = document.getElementsByClassName('mySelectedElement')[0];
const appleImg = documnet.getElementById('appleImage')
const clickHandler =()=>{
  console.log('clicked button')
  appleImg.style.display = 'none'
}
selectElement.addEventListener('click', clickHandler)
</scrip>
</html>
  • addEventListener์˜ ์ฒซ๋ฒˆ์งธ ์ธ์ž๋กœ ๋“ค์–ด๊ฐ„ event ๊ฐ€ ๋ฐ”๋กœ ์ด๋ฒคํŠธ์˜ ํƒ€์ž…์œผ๋กœ ์ฒซ ๋ฒˆ์งธ ์ธ์ž์˜ ์œ„์น˜์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ด๋ฒคํŠธ ์ข…๋ฅ˜๋Š” ๋‹ค์–‘ํ•˜๋‹ค.
    • 'click'
    • 'keydown'
    • 'input' ๋“ฑ...
    • ์ด๋ฒคํŠธ ํƒ€์ž…์€ ๋ฌธ์ž์—ด๋กœ ๋„ฃ์–ด์ค€๋‹ค.
  • addEventListener ์˜ ๋‘๋ฒˆ์งธ ์ธ์ž๋กœhandler ์— ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋กœ ์ฆ‰, ๋ฏธ๋ฆฌ ์ž‘์„ฑํ•ด ๋‘” ์ด๋ฒคํŠธ ํ•จ์ˆ˜๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.
  • addEventListener ์˜ ์„ธ ๋ฒˆ์งธ ์ธ์ž๋Š” ์„ ํƒ์ ์œผ๋กœ ๋“ค์–ด๊ฐ€๋Š” ์ธ์ž๋กœ ํ•„์š”ํ•  ๋•Œ๋งŒ ๋„ฃ์–ด์ค€๋‹ค.

-์ฐธ๊ณ  ๐Ÿ”)

-๋ฆฌ์•กํŠธ ๋ฌธ๋ฒ•์—์„  ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ด๋ ‡๊ฒŒ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์จ์ค€๋‹น..!
<div onClick = {function(){}}/>


3. Script ํƒœ๊ทธ์˜ ์œ„์น˜

  • ๋ธŒ๋ผ์šฐ์ €๋Š” HTML์„ Parsingํ•˜๋‹ค <script> ํƒœ๊ทธ๋ฅผ ๋งŒ๋‚˜๋ฉด DOM ์ƒ์„ฑ์„ ๋ฉˆ์ถ”๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์šฐ์„  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ๋ธŒ๋ผ์šฐ์ €์˜ ๋™์ž‘ ์ˆœ์„œ ๋•Œ๋ฌธ์— ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
  1. <script> ํƒœ๊ทธ๋Š” ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ ์•„๋ž˜์— ์žˆ๋Š” DOM์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
  2. HTML์ด Parsing ์ค‘ ์šฉ๋Ÿ‰์ด ํฐ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๋งŒ๋‚˜๋ฉด ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €๋Š” ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฆ‰์‹œ ํŽ˜์นญํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ๊นŒ์ง€ ์Šคํฌ๋ฆฝํŠธ ์•„๋ž˜์— ์žˆ๋Š” ๋ชจ๋“  ์š”์†Œ๋“ค์„ Parsing์„ ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋˜์–ด ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์ด ์ง€์—ฐ๋˜๊ฒŒ ๋œ๋‹ค.
  • ์ด๋ฅผ ํ•ด๊ฒฐ ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ์‹์€ JavaScript ํŒŒ์ผ์˜ <script> ํƒœ๊ทธ๋ฅผ ๋‹ซ๋Š”<body> ํƒœ๊ทธ ์ง์ „์— ์œ„์น˜ํ‚ค๋ฉด ๋œ๋‹ค.
  • ๋ธŒ๋ผ์šฐ์ €๋Š” HTML์˜ ๋ชจ๋“  ์ปจํ…์ธ ๊ฐ€ Parsingํ•˜์—ฌ ํŽ˜์ด์ง€ ๋‚ด์— ํ•ด๋‹น ๋‚ด์šฉ์„ ๋ณด์ธ ๋’ค `

*๐Ÿ’กconclusion

  • HTML์— JavaScript๋ฅผ ์ ์šฉํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • JavaScript์—์„œ DOM์— ์ ‘๊ทผํ•ด HTML ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์Šคํƒ€์ผ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ์˜ ๊ธฐ๋Šฅ์„ ์‚ดํŽด๋ณด๊ณ  ํด๋ฆญ๊ณผ ๊ฐ™์ด ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋ณธ๋‹ค.
  • addEventListener ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ •์ ์ธ ์›นํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

#๐Ÿ“‘Study Source

  • WeCode ๊ด€ํฌ ๋ฉ˜ํ† ๋‹˜์˜ ๊ฐ•์˜ ์ค‘ :]
profile
์ž๊ธฐ ์‹ ๋ขฐ์˜ ํž˜์„ ๋ฏฟ๊ณ  ์‹ค์ฒœํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ ์žํ•ฉ๋‹ˆ๋‹ค.
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€