발생한 문제 -1
<body>
<header class="main-title">
<h1>NB Camp Best Movie Collection</h1>
</header>
<form class="search">
<label>Search Movie :</label>
<input type="text" id="search-input" placeholder="Enter the title">
<button id="search-btn">Search</button>
</form>
<script src="app.js"></script>
</body>
function searchMovie(event) {
let text = document.querySelector('#search-input').value.trim();
let reg = new RegExp(text, "i");
let findMovies = [];
arr[0].forEach((movie) => {
if (reg.test(movie.title)) {
findMovies.push(movie)
}
})
section.innerHTML = ""
findMovies.forEach(arr => {
let temp_html = `<div class="movie-card" id="${arr.id}">
<img class="movie-image" src="https://image.tmdb.org/t/p/w500${arr.poster_path}" alt="...">
<h2>${arr.title}</h2>
<p>${arr.overview}</p>
<p>Vote average ⭐${arr.vote_average}</p>
</div>`
section.innerHTML += temp_html;
})
}
searchBtn.addEventListener('click', searchMovie);
영화 검색 버튼을 만들고 클릭 시 검색한 영화가 출력되는 기능을 구현하는 중 검색버튼 클릭 시 1초뒤에 다시 초기화 되는 문제 발생
발생한 문제 -2
<body>
<header class="main-title">
<h1>NB Camp Best Movie Collection</h1>
</header>
<label>Search Movie :</label>
<input type="text" id="search-input" placeholder="Enter the title">
<button id="search-btn">Search</button>
</form>
<section class="card-list">
<script src="app.js"></script>
</body>
let temp_html = `<div class="movie-card" id="${id}" >
<img class="movie-image" src="https://image.tmdb.org/t/p/w500${path}" alt="...">
<h2>${title}</h2>
<p>${overview}</p>
<p>Vote average ⭐${star}</p>
</div>`
document.querySelector('.movie-card').append(temp_html);
가져온 영화데이터가 하나의 div박스에 전부 붙어버리는 문제 발생
해결방법 -1
function searchMovie(event) {
event.preventDefault();
let text = document.querySelector('#search-input').value.trim();
let reg = new RegExp(text, "i");
let findMovies = [];
arr[0].forEach((movie) => {
if (reg.test(movie.title)) {
findMovies.push(movie)
}
})
section.innerHTML = ""
findMovies.forEach(arr => {
let temp_html = `<div class="movie-card" id="${arr.id}">
<img class="movie-image" src="https://image.tmdb.org/t/p/w500${arr.poster_path}" alt="...">
<h2>${arr.title}</h2>
<p>${arr.overview}</p>
<p>Vote average ⭐${arr.vote_average}</p>
</div>`
section.innerHTML += temp_html;
})
}
searchBtn.addEventListener('click', searchMovie);
Button type이 submit이 아닌데도 클릭 시 새로고침되는 문제가 계속 발생되서 혹시 몰라 event.preventDefault()
를 추가하니 더이상 새로고침 되지 않고 검색한 영화가 정상 출력되는것을 확인
해결방법 -2
append
대신 .insertAdjacentHTML('beforeend',temp_html)
을 사용해도 계속 하나의 div박스에 붙어버려서 위치도 바꿔보고, innerHTML으로 바꿔보기도 했는데도 똑같은 현상이 발생되어서 div박스를 하나의 section으로 묶고 querySelector
로 section을 지정하니 정상 출력 확인
<body>
<header class="main-title">
<h1>NB Camp Best Movie Collection</h1>
</header>
<form class="search">
<label>Search Movie :</label>
<input type="text" id="search-input" placeholder="Enter the title">
<button id="search-btn">Search</button>
</form>
<section class="card-list">
</section>
<script src="app.js"></script>
</body>
rows.forEach(list => {
let title = list.title;
let overview = list.overview;
let path = list.poster_path;
let star = list.vote_average;
let id = list.id;
let temp_html = `<div class="movie-card" id="${id}">
<img class="movie-image" src="https://image.tmdb.org/t/p/w500${path}" alt="...">
<h2>${title}</h2>
<p>${overview}</p>
<p>Vote average ⭐${star}</p>
</div>`
document.querySelector('.card-list').insertAdjacentHTML('beforeend',temp_html);
});
-> 아직 완성된 상태는 아니지만 제출까지 시간이 남았으니 css도 좀 더 만져보고 추가 기능을 구현할 수 있다면 필수구현 사항이외에도 추가적으로 구현할 수 있는 기능들이 있는지 생각해보고 추가해봐야겠다!