inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드캠프] 훈훈한 Javascript

조건에 따른 메세지 출력

조건에 따른 메시지 출력 강의

해결된 질문

183

김서연

작성한 질문수 9

0

 7:49 부분에 강사님은 NaN이 한 번만 출력되는데 저는 NaN NaN NaN NaN 총 네 번이 출력되는데 괜찮나요...?

 

 

<!DOCTYPE html>
<html lang="ko">
  <head>
    <title>D-Day</title>
    <link rel="stylesheet" href="./style.css" />

    <script>
      const dateForMaker = function () {
        // HTML에서 입력된 연도 값을 가져와서 inputYear 변수에 저장
        const inputYear = document.querySelector("#target-year-input").value;
        // HTML에서 입력된 월 값을 가져와서 inputMonth 변수에 저장
        const inputMonth = document.querySelector("#target-month-input").value;
        // HTML에서 입력된 날짜 값을 가져와서 inputDate 변수에 저장
        const inputDate = document.querySelector("#target-date-input").value;

        // 연도, 월, 날짜를 하이픈으로 연결하여 날짜 형식 문자열 생성
        // const dateFormat = inputYear + "-" + inputMonth + "-" + inputDate;
        const dateFormat = `${inputYear}-${inputMonth}-${inputDate}`;
        // 생성된 날짜 형식 문자열을 반환
        return dateFormat;
        // console.log(inputYear, inputMonth, inputDate);
      };

      const counterMaker = function () {
        const targeDateInput = dateForMaker();
        // 현재 시간
        const nowDate = new Date();
        // 대상 날짜를 생성하고 시, 분, 초, 밀리초를 0으로 설정
        const targetDate = new Date(targeDateInput).setHours(0, 0, 0, 0);
        // emaining = 남은 시간을 초로 환산
        // 밀리초를 초로 변환하기 위해 1000을 나눔
        const remaining = (targetDate - nowDate) / 1000;
        console.log(targetDate);
        // remaining이 0보다 작으면 즉, 타이머가 종료된다면
        if (remaining <= 0) {
          // "타이머가 종료되었습니다." 출력
          console.log("타이머가 종료되었습니다.");
          // 만약 잘못된 날짜가 들어왔다면 "유효한 시간대가 아닙니다." 출력
        } else if (remaining === NaN) {
          console.log("유효한 시간대가 아닙니다.");
        }

        // 'remaining' 값을 3600(초당 시간)과 24(시간당 일)로 나눈 후 정수 부분을 남은 일수로 저장
        const remainingDate = Math.floor(remaining / 3600 / 24);
        // 'remaining' 값을 3600(초당 시간)으로 나눈 후 24(시간)로 나눈 나머지를 남은 시간(시)으로 저장
        const remainingHours = Math.floor(remaining / 3600) % 24;
        // 'remaining' 값을 60(초당 분)으로 나눈 후 60(분)으로 나눈 나머지를 남은 분으로 저장
        const remainingMin = Math.floor(remaining / 60) % 60;
        // 'remaining' 값을 60(초)으로 나눈 후 60(초)으로 나눈 나머지를 남은 초로 저장
        const remainingSec = Math.floor(remaining) % 60;
        // 남은 일, 시간, 분, 초를 콘솔에 출력
        console.log(remainingDate, remainingHours, remainingMin, remainingSec);
      };
    </script>
  </head>
  <body>
    <h1>D-Day</h1>
    <div id="d-day-container">
      <div class="d-day-child-container">
        <span id="days">0</span>
        <span>일</span>
      </div>
      <div class="d-day-child-container">
        <span id="hours">0</span>
        <span>시간</span>
      </div>
      <div class="d-day-child-container">
        <span id="min">0</span>
        <span>분</span>
      </div>
      <div class="d-day-child-container">
        <span id="sec">0</span>
        <span>초</span>
      </div>
    </div>
    <div id="target-selector">
      <!-- 연도를 입력받는 입력란. 'id'는 "target-year-input"이며 CSS 클래스는 "target-input"입니다. -->
      <input id="target-year-input" class="target-input" size="5" /> -
      <!-- 월을 입력받는 입력란. 'id'는 "target-month-input"이며 CSS 클래스는 "target-input"입니다. -->
      <input id="target-month-input" class="target-input" size="5" /> -
      <!-- 날짜를 입력받는 입력란. 'id'는 "target-date-input"이며 CSS 클래스는 "target-input"입니다. -->
      <input id="target-date-input" class="target-input" size="5" />
    </div>
    <button onclick="counterMaker()" id="start-btn">카운트다운 시작</button>
  </body>
</html>

javascript

답변 1

0

노원두

안녕하세요! 서연님!

콘솔에서 4개를 찍고 있기 때문에 총 4번의 NaN이 나오게 된 것 같아요!

console.log(remainingDate, remainingHours, remainingMin, remainingSec); // 여기

 

이는 단지 콘솔로그 이므로 실행 결과에 영향을 주지는 않습니다!

따라서, 원하는 결과만 잘 나온다면 위 메시지는 크게 신경쓰지 않아도 괜찮아요!^^

강의 내용 PPT 제공

0

177

2

openweather 401 오류 지속적으로 발생해요..ㅠ

0

374

3

Geolocationposition 오류

1

521

1

for of, for in 강의에서

0

217

1

선생님 remaining 질문입니다.

0

232

1

ppt 제공

0

326

1

혹시 프론트, 백엔드 코스랑 강의가 겹치나요?

0

533

2

display:flex의 의미

0

428

1

반복문을 활용한 날짜 데이터 리팩토링

0

285

2

JS로 HTML. CSS 조작

0

256

1

locallhost

0

473

2

객체 속성 접근시 브라켓 이용(vs. 닷 오퍼레이터)

0

254

1

interval에 대한 질문입니다.

0

278

2

이해가 안되는 부분..

0

400

2

강의 보며 작업한 코드를

0

395

1

제대로 이해한건지 모르겠어요..

0

322

2

강의자료 부탁드립니다.

0

478

1

Uncaught TypeError: Cannot set properties of null (setting 'textContent')

0

5060

1

openweather api 2.5 관련 질문드립니다

0

745

2

openweather 401에러

0

520

1

createTodo함수 안에 매개변수

0

242

1

contents : complete : 가 무슨뜻인가요?

0

255

2

Javascript Exercise 깃허브에 푸쉬

0

349

1

savedWeatherData 조건문

1

352

1