TIL 23 | JS replit - DOM, Event

dabin *.โ—Ÿ(หŠแ—จห‹)โ—ž.*ยท2021๋…„ 8์›” 21์ผ
0

Javascript

๋ชฉ๋ก ๋ณด๊ธฐ
15/25
post-thumbnail

DOM(Document Object Model)

DOM์ด๋ž€ ์›นํŽ˜์ด์ง€์˜ HTML์„ ๊ณ„์ธตํ™”์‹œ์ผœ ํŠธ๋ฆฌ๊ตฌ์กฐ๋กœ ๋งŒ๋“  ๊ฐ์ฒด๋ชจ๋ธ์ด๋ฉฐ, DOM์€ HTML์ธ ์›นํŽ˜์ด์ง€์™€ ์Šคํฌ๋ฆฝํŒ…์–ธ์–ด(JavaScript)๋ฅผ ์„œ๋กœ ์ž‡๋Š”๋‹ค. JavaScript๋Š” ์ด ๋ชจ๋ธ๋กœ ์›น ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜๊ณ  ํŽ˜์ด์ง€๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. document ๊ฐ์ฒด๋กœ ์š”์†Œ๋‚˜ ์š”์†Œ์˜ ์†์„ฑ์—๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠน์ • element์— ์ ‘๊ทผํ•˜๊ณ  ์‹ถ์„ ๋•Œ tag, class, id์™€ ๊ฐ™์€ css selector๋กœ ์ ‘๊ทผํ•˜๋ฉด ๋œ๋‹ค.

//`innerHTML`์„ ์‚ฌ์šฉํ•˜๋ฉด ํƒœ๊ทธ ๋‚ด ๋‚ด์šฉ์ด ์ „๋ถ€ ๊ต์ฒด๋œ๋‹ค
document.body.innerHTML = '๋‚ด์šฉ ๋‹ค ๋ฐ”๊ฟˆ';
//class๋ช…์œผ๋กœ ์ ‘๊ทผํ•˜๊ธฐ 1
let blueElement = document.querySelector('.blue');
// 2 : class๋Š” ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ช‡ ๋ฒˆ์งธ์˜ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ์ธ์ง€๋„ ์ง€์ •ํ•œ๋‹ค. ์ง€์ •์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค.
let blueElement = document.getElementsByClassName('blue')[0];
//์š”์†Œ์˜ ์†์„ฑ์„ ์ˆ˜์ •ํ•˜๊ธฐ
blueElement.style.backgroundColor = 'blue';
//javascript์—์„œ ์ˆ˜์ •ํ•  ๋•Œ ํ•˜์ดํ”ˆ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. camelClass๋กœ ๋ฐ”๊ฟ” ํ‘œํ˜„ํ•œ๋‹ค. 

//์š”์†Œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค. (p ์š”์†Œ ์ƒ์„ฑ)
let p = document.createElement('p');
//class๋ฅผ ์ง€์ •ํ•œ๋‹ค. 
p.className = "paragraph";
//์œ„์น˜๋ฅผ ์ •ํ•ด์ค€๋‹ค. appendChildํ•จ์ˆ˜๋Š” ์š”์†Œ์˜ ๋’ค์ชฝ์— ๋ถ™์ด๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. 
//๋จผ์ € ์–ด๋–ค ํƒœ๊ทธ ๋’ค์— ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ๋ถ™์ผ์ง€ ์ƒ๊ฐํ•œ ๋’ค ์•ž์œผ๋กœ ๊ฐˆ ์š”์†Œ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
let h1 = document.querySelector('h1');
//h1๋’ค์— p๋ฅผ ๋ถ™์ธ๋‹ค
h1.appendChild(p);

Event

๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ์€ ์•„๋ž˜์— ์ •๋ฆฌํ•ด๋‘์—ˆ๋‹ค.
https://velog.io/@dabin0219/TIL-13-event-%EC%A2%85%EB%A5%98%EC%99%80-eventListener

event ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์œผ๋ฉด, DOM์„ ์‚ฌ์šฉํ•œ๋‹ค.

const thisIsButton = document.getElementsByClassName('login-btn')[0];

thisIsButton.addEventListener('click', function() {
  alert('๋กœ๊ทธ์ธ!')
});

ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ

  • ํ‚ค๋ณด๋“œ๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” keydown
  • ํ‚ค๋ณด๋“œ๋ฅผ ๋ˆ„๋ฅด๊ณ  ๋–ผ๋Š” ์ˆœ๊ฐ„ ๋ฐœ์ƒํ•˜๋Š” keyup
  • ํ‚ค๋ณด๋“œ๋ฅผ ๋ˆŒ๋Ÿฌ ์–ด๋–ค ํ…์ŠคํŠธ๊ฐ€ ์ž‘์„ฑ๋˜๋Š” ์ˆœ๊ฐ„ ๋ฐœ์ƒํ•˜๋Š” keypress

[๋ฌธ์ œ]

  • input#re-password์— keyup ์ด๋ฒคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.
  • input#password ์™€ input#re-password์˜ value ์†์„ฑ์„ ํ†ตํ•ด input์— ์ž‘์„ฑ๋œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ณ ,
  • ์„œ๋กœ ๊ฐ™์€์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•ด์„œ ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด
  • <p>ํƒœ๊ทธ์˜ .alert ํด๋ž˜์Šค์— "๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค" ๋ผ๋Š” ๋ฌธ๊ตฌ๋ฅผ ๋„ฃ์–ด์ฃผ์„ธ์š”.
  • ์„œ๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๊ฐ™๋‹ค๋ฉด "" ๋นˆ ๋ฌธ๊ตฌ๋ฅผ ๋„ฃ์–ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

[ํ’€์ด]

const thisIsRpw = document.getElementById('re-password'); 

thisIsRpw.addEventListener('keyup', function() {
  const password = document.getElementById('password').value;
  const rePassword = document.getElementById('re-password').value;
  
  if(password === rePassword) {
     document.querySelector('.alert').innerHTML = " ";
  } else {
     document.querySelector('.alert').innerHTML = "๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ	๋‹ค";
  }                         
});


[๊ณผ์ œ]

//dom์—์„œ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
const thisIsParagraph = document.getElementsByClassName('big-paragraph')[0];
//p๋ฅผ ํŒŒ๋ž€์ƒ‰์œผ๋กœ ์ˆ˜์ •
thisIsParagraph.style.color = "blue";
//pํด๋ฆญ์‹œ alert
thisIsparagraph.addEventListener('click', function() {
  alert("๋‚ด์šฉ์„ ํด๋ฆญํ–ˆ๊ตฐ์š”!")
});
profile
๋ชจ๋ฅด๋Š”๊ฒƒํˆฌ์„ฑ์ด

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