👨🏻🏫 개인 과제 리뷰
우선 올려주신 개인과제 리뷰영상을 보면서 내가 어려움을 겪었던 부분을 어떻게 쓰면 좋을지 이해하는것에 힘써보았다.
내가 해결하지 못한 부분을 유심히 보면서 내 코드에 적용하려고 했는데 쉽지 않았다.
계속 시도중인데 해결하면 코드를 추가할것이다!!🥹👊🏻
튜터님들과 팀원분의 도움과🙇🏻♀️ 사랑으로🫶🏻 탄생한 코드이기 때문에 계속 보면서 '이 코드가 어떤 작업을 위한거지?' 이해하고 활용할 수 있도록 해야겠다!
//영화 API요청 코드
const options = {
method: "GET",
headers: {
accept: "application/json",
Authorization:
"Bearer eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiI3OWU4MmZkM2YyNmQ1MzBmNDYyMGUxYWRlYTdlNTNmYyIsInN1YiI6IjY1MzA3ZTJjYWQ1OWI1MDBlMTI5ZTMwNyIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.XDs5Jyz-CPhJWQNlUDpXWh3eXjhxYxrD6AnbdRLUB98"
}
};
const movieListWrap = document.getElementsByClassName("movieListWrap")[0];
const movieList = document.getElementsByClassName("item");
//const allList -> let allList // const는 한번 할당되고 나면 재할당할 수 없음
let allList = [];
//fetch 바깥으로 빼서 여러번 적을 필요 없이 함수를 이용해서 재사용 가능
function renderMovie(results) {
results.forEach((movie) => {
//새로운 노드 생성하는 코드로 수정 & 클래스명 입히기
const item = document.createElement("div");
item.classList.add("movieCard");
const title = document.createElement("h2");
title.classList.add("card-title");
const text = document.createElement("p");
text.classList.add("card-text");
const poster = document.createElement("img");
poster.classList.add("moviePoster");
poster.src = `https://image.tmdb.org/t/p/w500${movie.poster_path}`;
title.innerHTML = `${movie.title}`;
text.innerHTML = `${movie.overview} <br><br>⭐⭐⭐<br>${movie.vote_average}`;
//영화 id alert 창 띄우기...
item.addEventListener("click", () => {
alert("영화ID : " + movie.id);
});
//item안에 세가지 요소 넣기
item.appendChild(poster);
item.appendChild(title);
item.appendChild(text);
movieListWrap.appendChild(item); //movieListWrap 안에 item 요소들을 넣겠다
});
}
fetch("https://api.themoviedb.org/3/movie/now_playing?language=ko-KR&page=1", options)
.then((response) => {
if (!response.ok) {
throw new Error("네트워크 오류");
}
return response.json(); // JSON 데이터 가져오기
})
.then((data) => {
console.log(data);
const results = data.results;
allList = results;
renderMovie(results);
})
.catch((error) => {
console.error("오류 발생:", error);
});
//input에 검색어를 입력
const searchInput = document.querySelector("#inputValue");
const searchForm = document.querySelector("#searchForm");
// console.log(searchButton);
// form태그 안에서 -> input에 엔터나, 버튼 클릭을 하면 submit 이벤트가 발생함
const searchMovie = (event) => {
event.preventDefault(); //submit 이벤트를 이용했을때 form 태그가 기본적으로 가지고 있는 새로고침 기능을 작동하지 않게 하는 코드
let searchText = searchInput.value;
if (searchText === "") {
alert("제목을 입력해주세요"); //검색어가 없을때 창 띄우기
}
console.log(searchText);
console.log(allList);
//filter 기능을 이용해서 검색어에 맞는 영화만 남기고 지우는 과정
const filtered = allList.filter((movie) => {
return (
movie.title === searchText || movie.title.replace(/ /g, "") === searchText || movie.title.includes(searchText)
);
});
movieListWrap.innerHTML = ""; //영화카드 지우기
console.log(filtered); //검색어에 맞게 필터된 영화만 남기기
renderMovie(filtered);
};
searchForm.addEventListener("submit", searchMovie);
✍🏻 개인과제에서 받은 코멘트
👥 팀 과제 발제
🚩 [자바스크립트 팀 과제]
우리팀의 계획
app.js
-> 정렬, 상세페이지 이동 기능paging.js
-> 페이지 기능detail.js
-> 상세 페이지review.js
-> 리뷰 기능style.css
-> 메인페이지, 정렬 스타일paging.css
-> 페이지기능 스타일detail.css
-> 상세페이지 스타일review.css
-> 리뷰창 스타일index.html
detail.html