JS on the browser

๊ฐ•์€๋น„ยท2022๋…„ 1์›” 7์ผ
0

JS

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

๐Ÿ“Œ DOM์ด๋ž€?

Document Object Model

  • ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ
  • HTML, XML ๋ฌธ์„œ์˜ ๊ฐ ์š”์†Œ๋“ค์„ ๊ณ„์ธต์ ์œผ๋กœ ํ‘œํ˜„ํ•˜์—ฌ ๋ฌธ์„œ ๋‚ด ์š”์†Œ๋“ค์„ ์ƒ์„ฑ, ๋ณ€ํ˜•, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.

๐Ÿ“Œ DOM์—์„œ HTML ์š”์†Œ ์ฐพ๊ธฐ

document.getElementbyId("")

  • ์ธ์ž๋กœ ์ฐพ์œผ๋ ค๋Š” ์š”์†Œ์˜ id๋ฅผ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ์ „๋‹ฌ (๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„)
  • id๋Š” ์œ ์ผํ•œ ๊ฐ’์ด๋ฏ€๋กœ, ํ•˜๋‚˜์˜ element๋งŒ ๋ฆฌํ„ดํ•œ๋‹ค.

document.getElementbyClassName("")

  • ์ธ์ž๋กœ ์ฐพ์œผ๋ ค๋Š” ์š”์†Œ์˜ class ์ด๋ฆ„์„ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ์ „๋‹ฌ (๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„)
  • ํ•ด๋‹น class ์ด๋ฆ„์„ ๊ฐ€์ง€๋Š” ๋ชจ๋“  element ๋ชฉ๋ก์„ ๋ฆฌํ„ดํ•œ๋‹ค. (์ˆœํšŒ ๊ฐ€๋Šฅ)

document.getElementsByClassName("red blue");

  • ๋‹ค์ˆ˜์˜ class ์ด๋ฆ„์„ ๋ชจ๋‘ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” element๋ฅผ ์ฐพ์„ ๋•Œ ์ด์šฉ
  • ์ธ์ž๋กœ class ์ด๋ฆ„๋“ค์„ ์ŠคํŽ˜์ด์Šค๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ „๋‹ฌ
  • ์œ„ ์˜ˆ์‹œ๋Š” class ์ด๋ฆ„์— 'red'์™€ 'blue' ๋ชจ๋‘๋ฅผ ํฌํ•จํ•˜๋Š” element๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

document.getElementsByTagName('div);

  • ์ธ์ž๋กœ ์ฐพ์„ element์˜ ํƒœ๊ทธ ์ด๋ฆ„์„ ์ „๋‹ฌํ•œ๋‹ค.
  • ํ•ด๋‹น ํƒœ๊ทธ๋ฅผ ๊ฐ€์ง„ ๋ชจ๋“  element๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

document,querySelector("")

  • ์ธ์ž๋กœ ๋ฐ›์€ CSS์„ ํƒ์ž๋ฅผ ํ†ตํ•ด, element๋ฅผ ์ฐพ์•„ ๋ฆฌํ„ดํ•œ๋‹ค.
  • ID๋กœ ์ฐพ๊ธฐ: document.querySelector('#div_1');
    • id ์ด๋ฆ„ ์•ž์— #์„ ๋ถ™์—ฌ ์ธ์ž๋กœ ์ „๋‹ฌํ•œ๋‹ค.
    • ์œ„ ์˜ˆ์‹œ๋Š” id๊ฐ€ 'div_1'์ธ element๋ฅผ ์ฐพ์•„ ๋ฆฌํ„ดํ•œ๋‹ค.
  • Class๋กœ ์ฐพ๊ธฐ: document.querySelector('.my');
    • class ์ด๋ฆ„ ์•ž์— .์„ ๋ถ™์—ฌ ์ธ์ž๋กœ ์ „๋‹ฌํ•œ๋‹ค.
    • ๋งŒ์•ฝ ํ•ด๋‹น class ์ด๋ฆ„์„ ๊ฐ€์ง„ element๊ฐ€ 2๊ฐœ ์ด์ƒ์ด๋ผ๋ฉด ์ฒซ ๋ฒˆ์งธ element๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
    • ์œ„ ์˜ˆ์‹œ๋Š” class ์ด๋ฆ„์ด 'my'์ธ element ์ค‘ ์ฒซ ๋ฒˆ์งธ element๋ฅผ ์ฐพ์•„ ๋ฆฌํ„ดํ•œ๋‹ค.
  • Tag๋กœ ์ฐพ๊ธฐ: document.querySelector('h1');
    • ์ธ์ž๋กœ ํƒœ๊ทธ๋ช…์„ ๋ฌธ์ž์—ด๋กœ ์ „๋‹ฌํ•œ๋‹ค.
    • ๋งŒ์•ฝ ํ•ด๋‹น ํƒœ๊ทธ๋ช…์„ ๊ฐ€์ง„ element๊ฐ€ 2๊ฐœ ์ด์ƒ์ด๋ผ๋ฉด ์ฒซ ๋ฒˆ์งธ element๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
    • divํƒœ๊ทธ๋ฅผ ๊ฐ€์ง€๋Š” element ์ค‘ ์ฒซ ๋ฒˆ์งธ element๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
  • ,๋กœ ๊ตฌ๋ถ„ํ•˜๊ธฐ: document.querySelector('.red, .green');
    • ์„ ํƒ์ž๋ฅผ ','๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ „๋‹ฌํ•˜๋ฉด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„ ํƒ์ž ์ค‘ ์ฒซ ๋ฒˆ์งธ๋กœ ๋ฐœ๊ฒฌ๋˜๋Š” ์„ ํƒ์ž๋ฅผ ๊ฐ€์ง„ element๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
  • ๋ณต์žกํ•œ ์„ ํƒ์ž: const el = document.querySelector("div.user-panel.main input[name=login]");
    - ์œ„ ์˜ˆ์ œ๋Š” ํด๋ž˜์Šค ์ด๋ฆ„์œผ๋กœ user-panel์™€ main์„ ๊ฐ€์ง„ <div> ํƒœ๊ทธ ์•ˆ์— (<div class="user-panel main">), name ์†์„ฑ์ด login์ธ <input> ์ค‘ ์ฒซ ๋ฒˆ์งธ element ๋ฆฌํ„ด

document.querySelectorAll("")

  • ์•ž์„œ ๋ณด์•˜๋˜ document.querySelector("")์™€ ์‚ฌ์šฉ๋ฒ•์€ ๋™์ผํ•˜๋‹ค.
  • ๋‹ค๋งŒ document.querySelector("")๋Š” ์ฒซ ๋ฒˆ์งธ element๋งŒ์„ ๋ฐ˜ํ™˜ํ–ˆ๋‹ค๋ฉด, document.querySelectorAll("")์€ ์ธ์ž๋กœ ์ „๋‹ฌํ•œ CSS ์„ ํƒ์ž๋กœ ์ฐพ์€ ๋ชจ๋“  element ๋ชฉ๋ก์„ ๋ฆฌํ„ดํ•œ๋‹ค.

๐Ÿ“Œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ

target.addEventListener(type, listener);

  • addEventListener() ๋ฉ”์„œ๋“œ๋Š” ์ง€์ •ํ•œ ์ด๋ฒคํŠธ๊ฐ€ target์— ์ „๋‹ฌ๋  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœํ•  ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์„ค์ •ํ•œ๋‹ค.
  • type: ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋กœ๋Š” ๋ฐ˜์‘ํ•  ์ด๋ฒคํŠธ ์œ ํ˜•์„ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ์ „๋‹ฌํ•œ๋‹ค. (click, input, change ๋“ฑ)
  • listener: ๋‘ ๋ฒˆ์งธ ์ธ์ž๋กœ๋Š” ํ•ด๋‹น target์—๊ฒŒ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํ˜ธ์ถœํ•  ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. (react to the event)
post-custom-banner

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