๐Ÿ“ŒLanguage/JavaScript

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ - ๋…ธ๋งˆ๋“œ ์ฝ”๋” ํด๋ก ์ฝ”๋”ฉ #7 ์—๋Ÿฌ ์ตœ์†Œํ™” ์‹œํ‚ค๊ธฐ,toggle

hellohailie 2022. 4. 8. 16:04

ํด๋ฆญํ•˜๋ฉด ๊ธ€์ž ์ƒ‰ ๋ฐ”๋€Œ๊ฒŒ ํ•˜๊ธฐ

const h1 = document.querySelector(".hello:first-child h1");

function handleTitleClick(){
    if(h1.style.color === "blue"){
        h1.style.color = "tomato";
    }
    else {
        h1.style.color = "blue";
    }
}

h1.addEventListener("click", handleTitleClick);

 

๋” ๋ณด๊ธฐ ์ข‹๊ฒŒ ๋ฐ”๊ฟ”๋ณด์ž. ๐Ÿ‘‡

 

const h1 = document.querySelector(".hello:first-child h1");

function handleTitleClick(){
    const currentColor = h1.style.color;
    let newColor;
    if(currentColor === "blue"){
        newColor = "tomato";
    }
    else {
        newColor = "blue";
    }
    h1.style.color = newColor;
}

h1.addEventListener("click", handleTitleClick);

 


1. currentColor๋Š” getter๋กœ์จ, ์ตœ๊ทผ color๊ฐ’์„ ๋ณต์‚ฌํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์˜๋ฏธ๋ก ์ ์œผ๋กœ ๋ดค์„ ๋•Œ const๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค.
2. newColor๋Š” setter๋กœ์จ, ๋ณ€์ˆ˜์— ๋Œ€์ž…๋œ ์ƒ‰์ƒ๊ฐ’์„ h1.style.color์— ์ตœ์ข…์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ๋„ ์˜๋ฏธ๋ก ์ ์œผ๋กœ ๋ดค์„ ๋•Œ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์—ผ๋‘์— ๋‘๊ธฐ ์œ„ํ•ด let์œผ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค.
3. ๋‹ค๋“ค ์•„์‹œ๊ฒ ์ง€๋งŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด์—์„œ "="(equal) ํ‘œ์‹œ๋Š” ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๊ฐ’์„ ์™ผ์ชฝ์— ๋Œ€์ž…ํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์—ผ๋‘์— ๋‘์‹œ๋ฉด ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ํŽธํ•˜์‹ค ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
4. (์ฐธ๊ณ ) ํ•จ์ˆ˜ ๋‚ด์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜ ๋ฐ–์—์„œ๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— const currentColor๋กœ ๋ณ€์ˆ˜ ์„ ์–ธ์„ ํ•˜๋”๋ผ๋„, ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๊ฐ’์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ํ† ๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ดํ•ดํ•˜๋ฉด,

1) click event ๋ฐœ์ƒ ๋ฐ ํ•จ์ˆ˜ ์‹คํ–‰
2) currentColor ๋ณ€์ˆ˜ ์„ ์–ธ ํ›„ h1.style.color ๊ฐ’ ๋ณต์‚ฌ (getter)
3) newColor ๋ณ€์ˆ˜ ์„ ์–ธ
4) currentColor ํ˜„์žฌ ๊ฐ’ ํ™•์ธ
5) ์กฐ๊ฑด์— ๋”ฐ๋ผ newColor์— "tomato" or "blue" ๊ฐ’ ๋Œ€์ž…
6) ๋งˆ์ง€๋ง‰์œผ๋กœ h1.style.color์— newColor๊ฐ’ ๋Œ€์ž… (setter)

 

 


=== ๊ฐ’์ด ์ผ์น˜ํ•จ.
= color๋ฅผ ๋ฐ”๊ฟ”์คŒ.

element์˜ style์„ JS์—์„œ ๋ณ€๊ฒฝํ•˜๋Š”๊ฑธ ์„ ํ˜ธํ•˜์ง€ ์•Š๋Š”๋‹ค. ์™œ๋ƒ๋ฉด ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์„ ์„ž๋Š” ๊ฑธ ์„ ํ˜ธํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. JS๋ฅผ ์ƒํ˜ธ์ž‘์šฉ์„ ๋งŒ๋“ค์–ด ๋‚ด๋Š”๋ฐ ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ , HTML์€ ๋‹ค๋ฅธ ์„ ํƒ์‚ฌํ•ญ์ด ์—†๊ณ , CSS๋Š” JSํŒŒ์ผ์—์„œ๋„ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ sytle์€ CSS์—์„œ ํ•˜๋Š”๊ฑธ ์„ ํ˜ธํ•œ๋‹ค.

step1. element๋ฅผ ์ฐพ์•„๋ผ.
step2. event๋ฅผ listenํ•ด๋ผ.
step3. ๊ทธ event์— ๋ฐ˜์‘ํ•ด๋ผ.

 

 


style์ž‘์—…์— ์ ํ•ฉํ•œ ๋„๊ตฌ๋Š” CSS๋‹ค!!
animation์— ์ ํ•ฉํ•œ ๋„๊ตฌ๋Š” JS๋‹ค!!
html ํŒŒ์ผ์€ CSS๋ฌธ์„œ์™€ JS๋ฌธ์„œ๋ฅผ importํ•˜๊ณ  ์žˆ๋‹ค. 

 

โžก๏ธ๋‚ด๊ฐ€ JS์—์„œ ํ•˜๊ณ  ์‹ถ์€๊ฑด, h1์— active class๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ! ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋” ์ ์€ JS์ฝ”๋“œ๋กœ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป๋Š”๋‹ค.

 

 

 


 

error ๋ฐœ์ƒ ์ตœ์†Œํ™”ํ•˜๊ธฐ!


์˜คํƒ€๋ฅผ ์ณ์„œ ์‹ค์ˆ˜๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— raw string์„ ์“ฐ๋Š” ๋Œ€์‹ , const๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ!!!

 

๐Ÿ‘‡

 

 

 


class list

 

 

function handleTitleClick(){
    const clickedClass = “clicked”;
    if (h1.classList.contains(clickedClass)){
        h1.classList.remove(clickedClass);
    } else {
        h1.classList.add(clickedClass);
    }
}

 

function handleTitleClick(){
    h1.classList.toggle("clicked");
}

 

์ด ๋‘๊ฐœ๋Š” ๊ฐ™๋‹ค!!!! toggle ์งฑ!

 

 

1. className์€ ์ด์ „์˜ class๋“ค์€ ์ƒ๊ด€ํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋“ ๊ฑธ ๊ต์ฒดํ•ด๋ฒ„๋ฆฐ๋‹ค.
2. classList ์šฐ๋ฆฌ๊ฐ€ class๋“ค์˜ ๋ชฉ๋ก์œผ๋กœ ์ž‘์—…ํ• ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ด์ค€๋‹ค.
3. contains์€ ์šฐ๋ฆฌ๊ฐ€ ๋ช…์‹œํ•œ class๊ฐ€ HTML element์˜ class์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ๋งํ•ด์ค€๋‹ค.
4.remove๋Š” ๋ช…์‹œํ•œ class name์„ ์ œ๊ฑฐํ•˜๊ณ  add๋Š” ๋ช…์‹œํ•œ class name์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.
5.toggle์€ ํ† ํฐ์ด ์กด์žฌํ•˜๋ฉด ํ† ํฐ์„ ์ œ๊ฑฐ, ํ† ํฐ์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ํ† ํฐ ์ถ”๊ฐ€ ํ•œ๋‹ค.

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

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ - ๋…ธ๋งˆ๋“œ ์ฝ”๋” ํด๋ก ์ฝ”๋”ฉ #9 interval, timeout, ์‹œํ–‰์ฐฉ์˜ค, ์ดˆ์‹œ๊ณ„ ๋งŒ๋“ค๊ธฐ, padStart  (0) 2022.04.09
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ - ๋…ธ๋งˆ๋“œ ์ฝ”๋” ํด๋ก ์ฝ”๋”ฉ #8 preventDefault, string๊ณผ ๋ณ€์ˆ˜ ํ•ฉ์น˜๊ธฐ, 4๊ฐ• super recap๊นŒ์ง€  (0) 2022.04.09
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ - ๋…ธ๋งˆ๋“œ ์ฝ”๋” ํด๋ก ์ฝ”๋”ฉ #6 HTML element event ์ฐพ๋Š” ๋ฐฉ๋ฒ• 2๊ฐ€์ง€, addEventListener ์‚ฌ์šฉ  (0) 2022.04.08
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ - ๋…ธ๋งˆ๋“œ ์ฝ”๋” ํด๋ก ์ฝ”๋”ฉ #5 event๋ฅผ listen ํ•˜๋Š” ๋ฐฉ๋ฒ• (click), addeventListener  (0) 2022.04.08
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ - ๋…ธ๋งˆ๋“œ ์ฝ”๋” ํด๋ก ์ฝ”๋”ฉ #4 JS์—์„œ HTML element ๊ฐ€์ ธ์˜ค๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•  (0) 2022.04.07