가수면

D-day 구현하기 본문

일지

D-day 구현하기

니비앙 2022. 10. 31. 18:19

아직 구현하지 못한 프로젝트의 나머지 기능들을 구현해보고자 한다.

1. D-day 구현하기

만들려고 하는 것이 구글에 돌아다니는 d-day 만들기와는 구조적으로 조금 달라 상당히 해멨지만, 직관적으로 어렴풋이 복잡하진 않을 것 같다는 느낌이 들었다.

그렇게 코드를 이해하는 데 상당한 시간을 들이길, 지금 상황에서 불필요한 코드들을 전부 쳐내고 심플하게 접근하는 방법으로 원하는 기능을 구현해낼 수 있었다.

let today = new Date()
let dDay = new Date(date)
let remain = today - dDay
let diffDay = Math.floor(remain / (1000 * 60 * 60 * 24))

2. D-day가 0이 되면(영화가 개봉하면) 목록에서 없애기

if (diffDay === 0) {
    $('.pre-movies').hide()
}

조건식을 어떻게 써야하나 GET 함수를 벗어나 따로 함수도 만들어보고 하며 위치를 고민한 결과, 그냥  $('#preBox').append(temp_html) 뒤에 붙이면 됐다.

3. 개봉 일자 정해지지 않은 영화에 D-day 표기 없애기

if (schedule === '개봉예정') {
    $('.D-day').hide()
}

2번의 방법을 그대로 사용해봤다.

그런데 영화들에 표기되어 있던 d-day가 전부 사라지는 문제가 발생했다.

 

if (schedule === '개봉예정') {
    $('#D-day').hide()
}

그래서 d-day의 class를 id로 바꿔서 시도해보았다.

그러자 개봉예정 영화 중 가장 처음에 위치한 영화의 d-day만 사라지는 문제가 발생했다.

 

규칙성을 찾기 위해 여러 시도를 해봤지만 도저히 규칙성을 찾을 수 없었기에, 나는 다른 방법을 찾아야 할 수밖에 없었다.

그렇게 생각해낸 방법은 아예 temp_html을 붙일 때 조건을 넣어버리는 것.

let temp_html = ``
if (schedule === '개봉예정') {
    temp_html = `<div class="pre-movies">
                ${link}"><img src="${img}" style="width: 250px"></a>
                <h4 class="text">${title} </h4>
                <h5 style="margin-top: 5px; margin-bottom: 5px;">${booking}</h5>
                <h5 style="color: gray; margin-top: 5px">${date} ${schedule}</h5>
            </div>`
} else {
    temp_html = `<div class="pre-movies">
                ${link}"><img src="${img}" style="width: 250px"></a>
                <h4 class="text">${title} </h4>
                <h5 style="margin-top: 5px; margin-bottom: 5px;">${booking}</h5>
                <h5 style="color: gray; margin-top: 5px">${date} ${schedule} <span id="D-day" style="color: red">D${diffDay}</span></h5>
            </div>`
}

그러자 신기하게도 기능이 제대로 구현이 되었다.

 

도대체 먼저 방법이 안 됐었던 이유는 뭘까...?

4. 2번 수정하기

3번에서 사용한 방법이 좀 더 안정성이 높다는 판단 하에 2번의 조건식을 삭제하고 else if로 추가했다.

if (schedule === '개봉예정') {
    temp_html = `<div class="pre-movies">
                ${link}"><img src="${img}" style="width: 250px"></a>
                <h4 class="text">${title} </h4>
                <h5 style="margin-top: 5px; margin-bottom: 5px;">${booking}</h5>
                <h5 style="color: gray; margin-top: 5px">${date} ${schedule}</h5>
            </div>`
} else if (diffDay === 0) {
    $('.pre-movies').hide()
} else {
    temp_html = `<div class="pre-movies">
                ${link}"><img src="${img}" style="width: 250px"></a>
                <h4 class="text">${title} </h4>
                <h5 style="margin-top: 5px; margin-bottom: 5px;">${booking}</h5>
                <h5 style="color: gray; margin-top: 5px">${date} ${schedule} <span style="color: red">D${diffDay}</span></h5>
            </div>`
}

 

 

이로써 내가 맡은 페이지가 모든 기능을 갖추게 되었다.

이제 마무리로 모바일 화면처리를 해 볼 생각이다.

'일지' 카테고리의 다른 글

줄 정리  (0) 2022.11.02
반응형 웹으로 바꾸기 (허접함 주의)  (0) 2022.11.01
문자열 치환, ...처리  (0) 2022.10.29
난관에 부딪친 크롤링  (0) 2022.10.28
토이 프로젝트 시작  (0) 2022.10.27
Comments