JavaScript ๊ธฐ์ดˆ -2

์œ ์„ฑํ›ˆยท2022๋…„ 10์›” 24์ผ

๐Ÿ“Œwindow.document๋ž€?
ํ˜„์žฌ ๋ธŒ๋ผ์šฐ์ €์— ๋ Œ๋”๋ง ๋˜๊ณ  ์žˆ๋Š” ๋ฌธ์„œ๋ฅผ ์˜๋ฏธ ํ•œ๋‹ค.
ํ•ด๋‹น ์†์„ฑ์„ ์ด์šฉํ•˜๋ฉด ํ•ด๋‹น ๋ฌธ์„œ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ
(DOM์— ๋Œ€ํ•œ ์ง„์ž…์  ์—ญํ• ์„ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค, ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€์˜ ์ •๋ณด ๋˜๋Š” ์›น ์š”์†Œ๋ฅผ ์ƒ์„ฑ ๋ฐ ์กฐ์ž‘ ๊ฐ€๋Šฅ)

๐Ÿ“Œ์š”์†Œ๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ์  ๋ฉ”์„œ๋“œ
๐Ÿ“document.getElementById : id๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌ ๋ฐ›๊ณ , ์ „๋‹ฌ ๋ฐ›์€ ์„ ํƒ์ž์™€ ์ผ์น˜ํ•˜๋Š” ๋ฌธ์„œ๋‚ด ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ ํ•œ๋‹ค.
๐Ÿ“document.querySelector : ์„ ํƒ์ž๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌ ๋ฐ›์•„, ์ „๋‹ฌ ๋ฐ›์€ ์„ ํƒ์ž์™€ ์ผ์น˜ํ•˜๋Š” ๋ฌธ์„œ ๋‚ด ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
๐Ÿ“textContent : ํ•ด๋‹น ๋…ธ๋“œ๊ฐ€ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ํ‘œํ•œ ํ•˜๋Š” ์†์„ฑ
(ํ•ด๋‹น text๋ฅผ ์ฝ๊ณ  ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ)

๐Ÿ“Œํ•จ์ˆ˜ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
1.ํ•จ์ˆ˜ ์„ ์–ธ์‹
function name(){
}
2.ํ•จ์ˆ˜ ํ‘œํ˜„์‹
const name = function(){
}

๐Ÿ“Œ๊ฐ„๋‹จ ์šฉ์–ด
๋งค๊ฐœ๋ณ€์ˆ˜ : ์ž๋ฃŒ๋ฅผ ์ „๋‹ฌ ๋ฐ›๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด ๋†“์€ ๋ณ€์ˆ˜(parameter)
๋ฐ์ดํ„ฐ ์ธ์ž : ์‹ค์ œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ์‹œ์— ์ „๋‹ฌํ•˜๋Š” ๋ฐ์ดํ„ฐ(argument)

๐Ÿ“Œ์ด๋ฒคํŠธ(event)๋ž€?
์‚ฌ์šฉ์ค‘์ด๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ค‘์ธ ์‹œ์Šคํ…œ ๋‚ด์—์„œ ์ผ์–ด๋‚˜๋Š” ์‚ฌ๊ฑด
ex.
์›นํŽ˜์ด์ง€ ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ์„ ํด๋ฆญ -> ํด๋ฆญ ์ด๋ฒคํŠธ
์›นํŽ˜์ด์ง€ ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค๋ณด๋Š”๋ฅผ ๋ˆŒ๋ €๋‹ค -> ํ‚ค๋‹ค์šด ์ด๋ฒคํŠธ
์›จํŽ˜์ด์ง€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํผ์— ๋‚ด์šฉ์„ ์ œ์ถœ ํ–ˆ๋‹ค -> ์ œ์ถœ ์ด๋ฒคํŠธ
...
์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ๋“ค์€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๊ฐ–์„ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œํ•ธ๋“ค๋Ÿฌ(handler)๋ž€?
์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ ๋˜๋ฉด ์‹คํ–‰๋  ์ฝ”๋“œ ๋ธ”๋ก์„ ์˜๋ฏธ
์ฃผ๋กœ ํ•จ์ˆ˜๊ฐ€ ์ด ์—ญํ• ์„ ๋‹ด๋‹น ํ•œ๋‹ค.

๐Ÿ“Œ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋ก : ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•  ์‚ผ์ˆ˜๋ฅผ ์ •์˜ ํ•˜๋Š” ๊ฒƒ
๋ฐฉ๋ฒ•
๐Ÿ“addEventListener : onclick, onkeydown๊ณผ ๊ฐ™์€ ์ด๋ฒคํŠธ ์†์„ฑ์„ ํ†ตํ•ด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค๋Š” addEventListener ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค!!
ex. target.addEventListener('click', function(){})
์žฅ์ 
1.์ด์ „์— ์ถ”๊ฐ€ํ•œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์‘ ๋ฉ”์„œ๋“œ ์กด์žฌ
2.๊ฐ™์€ ๋ฆฌ์Šค๋„ˆ(ํƒ€๊ฒŸ)์— ๋Œ€ํ•ด ๋‹ค์ˆ˜์˜ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋ก ๊ฐ€๋Šฅ
3.์ถ”๊ฐ€์ ์ธ ์˜ต์…˜ ์‚ฌํ•ญ ์ œ๊ณต

๐Ÿ“Œ์ด๋ฒคํŠธ ๊ฐ์ฒด : ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ๊ณผ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์— ์ž๋™์œผ๋กœ ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ
ex.
target.addEventListener('click', function(){})
-->click์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ•œ๋‹คtarget.addEventListener('click', function(event){})
-->์ž๋™์œผ๋กœ ์ „๋‹ฌ๋˜๋Š” ์ด๋ฒคํŠธ ๊ฐ์ฒด๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜ event์— ๋Œ€์ž… ํ•œ๋‹ค.

๐Ÿ“Œ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ ํ•˜๋Š” ๋ฐฉ๋ฒ•
๐Ÿ“appendChild : DOM๋‚ด ๊ฐœ๋ณ„ ์š”์†Œ(๋…ธ๋“œ)์— ์ž์‹ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ• ๋•Œ ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉ ๋˜๋Š” ๋ฉ”์„œ๋“œ
์‚ฌ์šฉ๋ฒ• : target.appendChild(์ž์‹์œผ๋กœ ์ถ”๊ฐ€ํ•  ์š”์†Œ)
ex.
const p = document.createElement("p")
document.body.appendChild(p)

๐Ÿ“ŒappendChild vs append
๊ณตํ†ต : ํƒ€๊ฒŸ ์š”์†Œ์— ์ž์‹ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€
appendChild : ์ถ”๊ฐ€ํ•œ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๋ฐ˜ํ™˜ ํ•œ๋‹ค, ๋…ธ๋“œ ๊ฐ์ฒด๋งŒ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
append : ๋ฐ˜ํ™˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค, ์š”์†Œ์— ๋…ธ๋“œ ๊ฐ์ฒด ์ชผ๋Š” ๋ฌธ์ž์—ด์„ ์ž์‹ ์š”์†Œ์— ์ถ”๊ฐ€ ๊ฐ€๋Šฅ

๐Ÿ“Œ์ž…๋ ฅ ์š”์†Œ๊ฐ’ ์ฝ๊ธฐ
target.value : ๋Œ€์ƒ ์š”์†Œ์˜ ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’์„ ์ฝ๋Š”๋‹ค.

๐Ÿ“Œ์‚ผํ•ญ ์—ฐ์‚ฐ์ž
ํ˜•ํƒœ : ์กฐ๊ฑด์‹ ? ์ฐธ์ผ๊ฒฝ์šฐ์˜ ๊ฒฐ๊ณผ : ๊ฑฐ์ง“์ผ ๊ฒฝ์šฐ์˜ ๊ฒฐ๊ณผ ์‹คํ–‰

๐Ÿ“Œ๊ธฐ๋ณธ์ƒ์„ฑ์ž(๋‚ด์žฅ ์ƒ์„ฑ์ž๋กœ ๋นŒํŠธ์ธ ๊ฐ์ฒด๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค)
ex.
const now = new Date() => ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์‹œ์ ์˜ ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ์ •๋ณด ํ‘œํ˜„
const then = new Date(2009,2,3) ==> ํ•ด๋‹น ๋‚ ์งœ์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ๊ฐ์ฒด
const interval = now - then ==> Date๊ฐ์ฒด ๋ผ๋ฆฌ๋Š” ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ๊ณ„์‚ฐ ๊ฐ€๋Šฅ

โณํƒ€์ด๋จธ ๋งŒ๋“ค๊ธฐ
๐Ÿ“setTimeout : ์ •ํ•ด์ง„ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์ฃผ์–ด์ง„ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ ํ•ด์ฃผ๋Š” ํƒ€์ด๋จธ ๋ฉ”์„œ๋“œ
์‚ฌ์šฉ๋ฒ• : setTimeout(์‹คํ–‰ํ•  ํ•จ์ˆ˜, ms๋‹จ์œ„ ์‹œ๊ฐ„)
ex.
setTimeout(function(){
console.log("test")
},1000)
==>1000ms์ง€๋‚˜๋ฉด ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰

๐Ÿ“setInterval : ์ผ์ •ํ•œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์— ๋”ฐ๋ผ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜๋ณต ์‹คํ–‰ ํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ
์‚ฌ์šฉ๋ฒ• : setInterval(๋ฐ˜๋ณต์‹คํ–‰ํ•  ํ•จ์ˆ˜, ms๋‹จ์œ„์˜ ์‹œ๊ฐ„)
ex.
setInterval(function(){
console.log("test")
},500)
==>500ms ๋งˆ๋‹ค ํ•จ์ˆ˜๋ฅผ ๋ฐ˜๋ณต์  ์œผ๋กœ ์‹คํ–‰ ํ•œ๋‹ค.
๐Ÿ“clearInterval : setInterval๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ ๋˜์–ด ๋ฐ˜๋ณต ์‹คํ–‰ํ•  ํ•จ์ˆ˜ ํƒ€์ด๋จธ๋ฅผ ๋“ฑ๋กํ•˜๋ฉด, 0์ด ์•„๋‹Œ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜
(์ˆซ์ž๋Š” ํƒ€์ด๋จธ์˜ id๋ฅผ ์˜๋ฏธ)
์ด๋ฅผ clearInterval๋ฉ”์„œ๋“œ์— ์ „๋‹ฌ ํ•˜๋ฉด ํƒ€์ด๋จธ์˜ ๋ฐ˜๋ณต ์‹คํ–‰์ด ์ทจ์†Œ ๋œ๋‹ค
ex.
let timer;
timer = setInterval(function(){
console.log("test");
},500)
==>์…‹ํŒ…๋œ ํƒ€์ด๋ฒ„์˜ ๋ฐ˜ํ™˜๊ฐ’(id)๋ฅผ ๋ณ€์ˆ˜์— ์ €์žฅ
clearInterval(timer) ==>์…‹ํŒ…๋œ ํƒ€์ด๋จธ๋ฅผ ๋ฉˆ์ถ”์–ด๋ผ

profile
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๋ถ€

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