ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JavaScript/VanillaJS] ์กฐ์šฉํ•œ ์•Œ๋žŒ(silence alarm) ์›น ์•ฑ ๋งŒ๋“ค๊ธฐ - 3
    javascript 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ํŽธ๋ถ€ํ„ฐ๋Š” ์ง„๋„๊ฐ€ ๋‚˜๊ฐ€๋Š” ๋А๋‚Œ์ด ๋“œ์‹ค๊ฑฐ์—์š”. ์‹œ๊ฐ„์„ ๋„ฃ์—ˆ๋”๋‹ˆ ํ™”๋ฉด์ด ๋ฐ”๋€Œ๋‹ˆ๊นŒ์š”. ๊ฒฐ๊ณผ๋ฌผ์— ๋ณ€ํ™”๊ฐ€ ์žˆ์ฃ !

     

    ๋‹ค์Œ ํŽธ์„ ๊ธฐ๋Œ€ํ•ด์ฃผ์„ธ์š” :)

    ๋Œ“๊ธ€

Posted by Bejerry.