프로젝트/SpringBoot Side Project
페이지네이션 js 코드
amungstudy
2024. 3. 15. 15:26
재사용할 수 있게 만들어본 페이지네이션 코드이다.
부트스트랩을 적용해서 동적으로 페이지네이션을 생성할 때 사용할 수 있다.
1페이지에 5개의 항목을 기준으로 페이지네이션을 진행하고 있다.
서버에서 int totalCount, List<내용객체> list 를 응답값으로 전달한다.
응답값을 js파일에서 그려주면서 아래의 createPagination()을 실행해주면 된다.
/**
* 페이지네이션을 그려주는 함수
* @param totalCount 총 결과수
* @param currentPage 현재 페이지
* @param keyword 검색어
*/
function createPagination(totalCount, currentPage, keyword){
/**
* 현재 페이지 몇인지 받아오기
* totalCount 로 페이지 몇까지 나오는지 계산하고
* 페이지 범위 계산하기
*/
// 총 페이지 수
const totalPages = Math.ceil(totalCount/5);
// 시작 페이지
let startRange = Math.floor((currentPage - 1) / 5) * 5 + 1;
// 끝 페이지
let endRange = startRange + 4;
const paginationUlTag = document.getElementById("pagination");
let newHTML = "";
// 이전 페이지 이동 버튼 생성
let before = startRange-1;
if(currentPage>5){
newHTML +=
'<li class="page-item">' +
' <a class="page-link" onclick="roadAddrApi('+before+',\''+keyword+'\')" aria-label="Previous">' +
' <span aria-hidden="true">«</span>' +
' </a>' +
'</li>';
}
// 페이지 숫자 생성
for (let i = startRange; i <= endRange; i++) {
if(i == currentPage){
newHTML += '<li class="page-item active"><a class="page-link" onclick="roadAddrApi('+i+',\''+keyword+'\')">'+i+'</a></li>';
}else if(i>totalPages){
break;
}else{
newHTML += '<li class="page-item"><a class="page-link" onclick="roadAddrApi('+i+',\''+keyword+'\')">'+i+'</a></li>';
}
}
// 다음 페이지 이동 버튼 생성
let next = endRange+1;
if(totalPages-endRange>=1){
newHTML +=
'<li class="page-item">' +
' <a class="page-link" onclick="roadAddrApi('+next+',\''+keyword+'\')" aria-label="Next">' +
' <span aria-hidden="true">»</span>' +
' </a>' +
'</li>';
}
paginationUlTag.innerHTML = newHTML;
}