티스토리 뷰
오늘은 아고라 스테이츠에 간단한 기능을 추가하였다.
글의 목록을 지정한 개수로 나누어서
나눠진 글의 개수를 볼 수 있게 만드는 pagination 기능을 구현해보았다.
//Pagination
const paginationContianer = document.querySelector(".page_list");
//8개씩 출력
let totalPage = Math.ceil(agoraStatesDiscussions.length / 8);
let currentPage = 1;
function setPage(totalPage, currentPage) {
let li = "";
let prevPage = currentPage - 2;
let nextPage = currentPage + 2;
//현재 페이지 위치에 따라
//보여지는 페이지 조정
if (currentPage === 1) {
nextPage += 2;
}
if (currentPage === 2) {
nextPage += 1;
}
if (currentPage === totalPage) {
prevPage -= 2;
}
if (currentPage === totalPage - 1) {
prevPage -= 1;
}
// '<'을 누르면 이전 페이지로 이동 가능하게 구현
if (currentPage > 1) {
li += `<li class="prev__page" onClick=setPage(${totalPage},${
currentPage - 1
})><</li>`;
}
//페이지의 num을 설정
for (let i = prevPage; i <= nextPage; i++) {
if (i >= 1 && i <= totalPage) {
//선택해주기
if (i === currentPage) {
li += `<li class="page_num select_li">${i}</li>`;
} else {
li += `<li class="page_num">${i}</li>`;
}
}
}
// '>'을 누르면 이후 페이지로 이동 가능하게 구현
if (currentPage < totalPage) {
li += `<li class="next__page" onClick=setPage(${totalPage},${
currentPage + 1
})>></li>`;
}
paginationContianer.innerHTML = li;
ul.innerHTML = "";
render(ul, (currentPage - 1) * 8);
}
setPage(totalPage, currentPage);
< 1 2 3 4 5 >
같은 형태로 구현을 위해서
크게 < / 1 2 3 4 5 / >
세 부분으로 나누어 제작하였다.
글의 페이지가 5개 이상 존재하면 글의 페이지를 5개 보여지게 구현하기를 원했다.
따라서 현재 페이지에 따라서 보여지는 페이지를 5개로 조정하느라 많은 시도를 하였다.
결과적으로 첫번째, 두번째, 맨 뒤, 맨뒤의 앞 페이지를 예외처리를 해주어야했고,
prevPage, nextPage를 조정하면서 해당 조건에서도 5개가 보이도록 구현하였다.
이외에도 localstorage를 이용해서 새로고침을 하여도
작성한 글이 페이지에 유지가 되고, 답변도 모달형태로 띄울수 있게 고치기를 원했는데
pagination 구현에만 시간을 쏟아서 간단하게 css만 수정하고 제출을 하였다.
아쉬움이 많이 남는 프로젝트였지만, 틈틈히 수정하고 부족한 기능을 매꾸어 나가야겠다!
-끝-
'코드스테이츠' 카테고리의 다른 글
TIL 23.01.12 (0) | 2023.01.12 |
---|---|
TIL 23.01.11 & Section 1 회고 (0) | 2023.01.11 |
TIL 23.01.09 (0) | 2023.01.09 |
코드스테이츠 16일차 회고 (0) | 2023.01.05 |
TIL 23.01.04 (0) | 2023.01.04 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- dfs
- React quill
- 프리프로젝트
- BFS
- SEB 43기
- 개인 프로젝트
- SEB 43
- 코테
- 프론트엔드
- 백준
- useContext
- 다이나믹 프로그래밍
- SEB43
- 브루드포스
- 기술면접
- 프로젝트
- 인적성
- 감정 일기장
- Redux
- 회고
- 그리디 알고리즘
- SEB43기
- til
- seb
- 코드스테이츠
- 프로그래머스
- Python
- dictionary
- 감정일기장
- 스택오버플로우
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함