728x90
반응형
API 데이터를 가져왔다 처음 TMDB 에서 받아온 데이터를 forEach문 을통하여 HTML 페이지에 영화 카드를 추가하였다
movies.forEach(movie => {
const temp_html = `<div class="carbox" >
<div class="col" >
<div class="card h-100">
<img src="https://image.tmdb.org/t/p/w300${movie.backdrop_path}"
}
<h5 class="title">${movie.title}</h5>
<p class="overview">${movie.overview}
</p>
</div>
<div class="card-footer">
<small class="vote_average">${movie.vote_average}</small>
</div>
</div>`
원리는 foreach문의 특성인 배열이 가지고있는 요소들을 한번씩 반복 하게 해주는것이였는데
원래대로 라면 20개의 영화 카드들이 만들어져야하지만 한개만 만들어졌다
문제해결)
//문자열 특 str=str+a
//이런식으로 카드를 중첩해서 쌓아야함 안그러면 초기화 되서 하나만 나옴
let str ="";
movies.forEach(movie => {
const temp_html = `<div class="carbox" >
<div class="col">
<div class="card h-100">
<img src="https://image.tmdb.org/t/p/w300${movie.backdrop_path}"
}
<h5 class="title">${movie.title}</h5>
<p class="overview">${movie.overview}
</p>
</div>
<div class="card-footer">
<small class="vote_average">${movie.vote_average}</small>
</div>
</div>`
// moviesContainer.innerHTML= temp_html
str = str + temp_html
//temp 을 inner로 집어 넣겠다
원인은 foreach 그자체의 특성이였다 API로받은 20의 카드데이터로 20개를 만들기는 하지만
하나만들고 그위에 덧씌우고 를 반복하기에 결론적으로는 마지막 20번째 카드만 남게됐다
이를 방지하기위에 카드 중첩을 위한 코드를 추가했다
let str ="";
str이라는 0번째 아무것도 없는 문자를 할당하고
str = str + temp_html
//temp 을 inner로 집어 넣겠다
console.log(str);
});
moviesContainer.innerHTML=str
}).catch(err => console.error(err));
str 재할당을 통해 계속해서 카드가 중첩되도록 만들었다

아래는 제목만 넣어본 상태순서대로 잘 나오고있다 이제 제목과 id값을 넣고 내용 평점을 모두넣어주고
css까지 접목하면...


상상치도 못한 광경이 펼쳐졌다... 내일은 이걸 해결해 봐야겠다,,,
728x90
반응형
'Today I Learned (TIL)' 카테고리의 다른 글
영화 검색사이트 만들기 23.10.23 (0) | 2023.10.23 |
---|---|
TIL (Today I Learned) 23.10.22(마트료시카 구성) (1) | 2023.10.22 |
TIL (Today I Learned) 23.10.20 (1) | 2023.10.20 |
TIL (Today I Learned) 23.10.19 (0) | 2023.10.19 |
TIL (Today I Learned) 23.10.18 (0) | 2023.10.18 |