-
[JavaScript/VanillaJS] ์กฐ์ฉํ ์๋(silence alarm) ์น ์ฑ ๋ง๋ค๊ธฐ - 3javascript 2019. 4. 24. 17:48
์๋ ํ์ธ์, Jerry์ ๊ณต๋ถ๋ฐฉ์ Jerry์ ๋๋ค.
3ํธ์ ์ฐ๊ธฐ์ ์์ 1ํธ๊ณผ 2ํธ์ ๋งํฌ๋ฅผ ๋จผ์ ๊ฑธ๊ณ ์์ํ๊ฒ ์ต๋๋ค.
1ํธ : ์กฐ์ฉํ ์๋(display alarm) ์น ์ฑ ๋ง๋ค๊ธฐ - 1(https://bejerry.tistory.com/15)
2ํธ : ์กฐ์ฉํ ์๋(display alarm) ์น ์ฑ ๋ง๋ค๊ธฐ - 2(https://bejerry.tistory.com/16)
์, ์ ๋ฆฌ๋ฅผ ๊ฐ๋ตํ ํ๊ณ 3ํธ ์ด์ด ๋๊ฐ๊ฒ ์ต๋๋ค :)
1ํธ์์ ์๊ฐ์ ๊ตฌํ๋ ๊ฒ๊น์ง ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ 2ํธ์์ ์ฐ๋ฆฌ๊ฐ ๋ฉ์ถ ์๊ฐ์๊ฒ ์๊ธฐ๋ฅผ ๋ถ์ด๋ฃ์ด ์๊ณ๊ฐ ์์ง์ด๊ฒ ํ์ฃ ! ์ ๋ง ๊ฐ๋จํ ๊ฑฐ์ง๋ง ๊ฒฐ๊ณผ๋ฌผ์ ๋ณด๋ฉด ๊ด์ค๋ ๊ธฐ๋ถ ์ข์ต๋๋ค XD
๊ทธ๋ ๋ค๋ฉด, ์ด๋ฒ ์๊ฐ์ <input> ํ๊ทธ์ ์๊ฐ์ ์ ๋ ฅํด์ ํ์ฌ์๊ฐ๊ณผ ์ธํ ์๊ฐ(input์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ์๊ฐ)์ด ๊ฐ์ผ๋ฉด console์ ๋์๋ณด๋ ๊ฒ๊น์ง ํด๋ณด๊ฒ ์ต๋๋ค.
getAlarm( )
// ์ค์ ํ ์๊ฐ์ ๊ฐ์ ธ์ค๊ณ ํ์ฌ ์๊ฐ๊ณผ ๋น๊ตํ์ฌ ์๋ ๊ธฐ๋ฅ์ ํ ํจ์ function getAlarm(){ const setValue = setTime.value; // input์ ์ ๋ ฅ๋ ๊ฐ์ ๋ณ์์ ๋ด์์ค๋๋ค. const date = new Date(); const hours = date.getHours(); const minutes = date.getMinutes(); if( /* ? */ ){ console.log('hi, jerry'); } }
getAlarm( )์ด๋ผ๋ ํจ์๋ฅผ ๋ง๋ค์์ต๋๋ค. getAlarm( ) ํจ์์์ setValue๋ผ๋ ๋ณ์์ <input> ํ๊ทธ์ ์ค์ ๋ ๊ฐ์ ์ ์ธ ๋ฐ ์ด๊ธฐํํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Date๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ ์๊ฐ๊ณผ ๋ถ์ ๊ฐ๊ฐ hours, minutes ๋ณ์์ ์ ์ธ ๋ฐ ์ด๊ธฐํํฉ๋๋ค.
*hours ๋ณ์๋ช ๊ณผ minutes ๋ณ์๋ช ์ getTime์์ ์ฌ์ฉํ์ง ์์๋๊ฐ?
๋ธ๋ก ์ค์ฝํ(๋ธ๋ก์ ๋ฒ์)๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๊ด์ฐฎ์ต๋๋ค๋ง ๊ฐ์ธ์ ์ธ ์๊ฐ์ผ๋ก๋ ๋ํ ํ๋ก์ ํธ์์ ๋ณ์๋ช ์ ์ค๋ณต์ผ๋ก ์ฐ์ง ์๋ ๊ฒ ์ข์ ๋ฏ์ถ์ต๋๋ค. ์ด๋๊น์ง๋ ๊ฐ์ธ์ ์ธ ์๊ฐ์ ๋๋ค :)
๋ค์ ๋ณธ๋ก ์ผ๋ก ๋์์ if( ) ๋ฌธ์ ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ค๋ช ์ ์์ ์ผ๋ถ๋ฌ if( ) ์กฐ๊ฑด์ ์ ๋ค์ด๊ฐ ๋ถ๋ถ์ ๋ฌผ์ํ(?)๋ก ํด๋๋๋ฐ์. ๊ทธ ์ด์ ๋ ์ ์๋๋ง๋ผ๋ ํ ๋ฒ ์๊ฐํด๋ณด์๋ผ๋ ์๋ฏธ์์ ๋น์๋์ต๋๋ค.
๋ฃ๊ธฐ ์ ์ ํ์ธํด์ผ ํ ๊ฒ์ด ์๊ธฐ ๋๋ฌธ์ด๊ธฐ๋ ํ๋ฐ์. setValue ๋ณ์์ ๋ด์ setTime.value(์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ์ค์ ์๊ฐ)๊ฐ ์ด๋ค ๋ชจ์์ผ๋ก, ์ด๋ค ์๊น์๋ก ๋ณ์์ ๋ด๊ฒผ๋์ง ํ์ธํด์ผ ํฉ๋๋ค. setValue ๋ณ์์ ๊ฐ์ด ๋ด๊ธฐ์๋ง์ console.log(setValue)๋ก ํ์ธํ๋ ๋ฒ๋ฆ์ด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
ํ์ธํด๋ณด์ จ๋์?
์ ๋ ํ์ธ ์ ์ ์์ํ๊ธฐ๋ฅผ ๋ ์๋ฆฌ๋ก ์ ๋์ฌ ๊ฒ ๊ฐ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ค์ 9์ 9๋ถ์ด๋ผ๊ณ ์ ๋ ฅํ๋ฉด 9:9์ ๋ชจ์ต์ ์์ํ๋๋ฐ ๋ณด๊ธฐ ์ข๊ฒ ํ๋ ธ์ต๋๋ค. ๋ ์๋ฆฟ์๋ก 0์ด ์ฑ์์ ธ ์๋๋ผ๊ณ ์, 09์ 09๋ถ. ์คํ๋ 24์๊ฐ ํ๊ธฐ๋ฒ์ผ๋ก ํ๊ธฐ๋ฉ๋๋ค. ์คํ 3์ 40๋ถ์ด๋ผ๋ฉด, 15:40์ผ๋ก์.
์ฐ๋ฆฐ ์ด๋ฏธ ๋ฐฑํฑ( ` )์ ์ฌ์ฉํด์ ์ ๋ชจ์ต์ผ๋ก ๋ง๋ค์ด๋์ฃ ? ๋ฐฑํฑ( ` ) ์์ ๊ฐ์ string TYPE์ ๋๋ค. ๊ทธ๋ผ setValue๋ ์ด๋ค TYPE์ผ๋ก ๋ฐํ๋ ๊น์?
TYPE์ด ๊ถ๊ธํ ๋ typeof( ) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค. ํ ๋ฒ ํ์ธํด๋ณผ๊น์? ๋ฐ์ ์์ค๋ฅผ ๋ณต์ฌํ์๋, 3ํญ ์ฐ์ฐ์์ ๊บพ์๊ฐ < ๋ก ์ ๋ค์ด๊ฐ๋์ง [& l t]๋ก ๋ค์ด๊ฐ๋์ง ํ์ธํ๊ณ ์คํํด์ฃผ์ธ์.
typeof( )
console.log(typeof(setValue), setValue); // string, 13:59
init( ) ํจ์์ getAlarm์ 1์ด๋ง๋ค ํ ๋ฒ์ฉ ๋ถ๋ฅด๋ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ 1์ด๋ง๋ค console์ log๊ฐ ์ฐํ ๊ฑฐ์์. ์๋ ์บก์ณ๋ฅผ ๋ณด์ธ์. console.log๋ก ์ฐํ ๊ฒ์ ํ์ธํด๋ณด๋ฉด ์์ string, ๋ค์ ์ค์ ํ ์๊ฐ์ด ๋์ค์ฃ ?
setValue๋ string์ด๊ณ , ๋ฐฑํฑ( ` )๋ string์ธ๊ฑธ ์์งํ๊ณ ์์ผ๋ฉด if๋ฌธ์ ์กฐ๊ฑด์ ์ ์๋ง๊ฒ ๋ค์ด๊ฐ๋ ๊ฑธ ์ ์ ์์ต๋๋ค.
TYPE์ ์ ํ์ธํ๋๊ฐ ํ๋ฉด === (equal)์ด 3๊ฐ๋ฉด TYPE๊น์ง ๋น๊ต๋ฅผ ํ์ง์? 5์ '5'๋ TYPE์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ 5 === '5'๋ false์ ๋๋ค. ๊ทผ๋ฐ ์ด๊ฒ๋ค์ด ๋ณ์์ ๋ด๊ฒจ์๊ณ ๊ทธ๋ฅ 5๋ผ๊ณ ๋ง ์๊ฐํ๊ณ ์์ค๋ฅผ ์ง ๋ค๋ฉด? if( ) ๋ฌธ์ ์ ๋ค์ด๊ฐ๊ณ ๊ณ์ ๊ฒ๋๋ ๊ฑธ ๊ฒช์ ๋๊ฐ ์์ต๋๋ค.
๊ทธ๋์ ๋ฏธ๋ฆฌ TYPE์ ํ์ธํด์ ์ถํ ๋ถ์์ฌ๊ฐ ์๋๋ก ๋ฏธ๋ฆฌ ํ์ธํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ผ if( ) ๋ฌธ์ ์กฐ๊ฑด์ ๋ ๋ง์ ์ฑ์ฐ๊ณ ์ ๋๋ก ๋ ์์ค๋ฅผ ํ์ธํด๋ณด์ฃ .
JS-3
const alarmContainer = document.querySelector('.js-alarm'); const currentTime = alarmContainer.querySelector('h1'); // inputํ๊ทธ๋ฅผ ๋ด์ ์ ์ญ๋ณ์ ์ถ๊ฐ const setTime = alarmContainer.querySelector('input'); // ์ค์ ํ ์๊ฐ์ ๊ฐ์ ธ์ค๊ณ ํ์ฌ ์๊ฐ๊ณผ ๋น๊ตํ์ฌ ์๋ ๊ธฐ๋ฅ์ ํ ํจ์ function getAlarm(){ const setValue = setTime.value; //input์ ์ ๋ ฅ๋ ๊ฐ์ ๋ณ์์ ๋ด์์ค๋๋ค. const date = new Date(); const hours = date.getHours(); const minutes = date.getMinutes(); const current = `${hours < 10 ? `0${hours}` : hours}:${minutes < 10 ? `0${minutes}` : minutes}`; if(current === setValue){ console.log(current, setValue); // 13:30, 13:30 } } function getTime(){ const date = new Date(); const hours = date.getHours(); const minutes = date.getMinutes(); const seconds = date.getSeconds(); currentTime.innerText = `${hours < 10 ? `0${hours}` : hours}:${minutes < 10 ? `0${minutes}` : minutes}:${seconds < 10 ? `0${seconds}` : seconds}`; } function init(){ getTime(); setInterval(getTime, 1000); setInterval(getAlarm, 1000); } init();
ํ์ฌ ์๊ฐ๊ณผ ์ค์ ์๊ฐ์ด ๊ฐ์ ๋๋ง console.log( )๊ฐ ๋์ค๋ ๊ฑธ ํ์ธํ์์ต๋๋ค.
๋ญ๊ฐ ๋ง๋ค์ด์ง๋ ๋๋์ด ๋๋ค์ :) ์๊ฐ์ด ๊ฐ์ผ๋ฉด ์ฐ๋ฆฐ ํ๋ฉด์ ๊น๋นก์ด๊ธฐ๋ก ํ์ด์.
๋ค์ ์๊ฐ์๋๋นจ๊ฐ ๋ฐํ์์ด ๊น๋นก์ด๋ CSS๋ฅผ ์์ฑํ๊ณ ๋ธ๋ผ์ฐ์ ์ ์ ์ฉํด๋ณด๋ ์๊ฐ์ ๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค.
JS์์ ์ค๋ช ๋๋ฆฌ๋ ค๊ณ ํ๋ ์ด๋๋ถํฐ ์ด๋๊น์ง๋ฅผ ์ค๋ช ๋๋ ค์ผ ํ ์ง ๋ชฐ๋ผ ์ ๊ธฐ์ค์ผ๋ก ์๋ฉด ์ข๊ฒ ๋คํ๋ ๋ถ๋ถ(๋ฉ์๋ ๋ฑ)์ ์ค๋ช ํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ค๋ณด๋ ์ ์ ์น ์ฑ ๋ง๋๋ ์์ค ์ค๋ช ๊ณผ ์๋ด์๋ ์ง์ ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํ์ง๋ง ์์ค์ ๋ํ ์ค๋ช (๋ฆฌ๋ทฐ)๋ ์๊ณ '์ด๋ ๊ฒ ์ ์ผ๋ฉด ์ด๋ ๊ฒ ๋์จ๋ค.'ํ๊ณ ์์ค๋ฅผ ๋ณต๋ถํ๋ผ๋ ์์ ํฌ์คํ ์ ํ๊ณ ์ถ์ง ์์ต๋๋ค.
๋ค์ 4ํธ๋ถํฐ๋ ์ง๋๊ฐ ๋๊ฐ๋ ๋๋์ด ๋์ค๊ฑฐ์์. ์๊ฐ์ ๋ฃ์๋๋ ํ๋ฉด์ด ๋ฐ๋๋๊น์. ๊ฒฐ๊ณผ๋ฌผ์ ๋ณํ๊ฐ ์์ฃ !
๋ค์ ํธ์ ๊ธฐ๋ํด์ฃผ์ธ์ :)
'javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ