티스토리 뷰
자바스크립트를 이용한 페이징 처리 방법이다.
페이징 파라미터
appendEle : Element
totalCount : 데이터 총 카운트
recordsPerPage : 페이지 데이터 레코드 개수
navPage : 페이지 개수
currentPage : 현재 페이지
sellBoolean : 맨앞, 맨뒤 표현 여부
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Paging</title>
<style type="text/css">
.paging a {
font-size: 1.500rem;
}
.paging a.on {
text-decoration: none;
color: #FF0000;
font-weight: bold;
}
</style>
<script type="text/javascript" src="./jquery-3.3.1.min.js"></script>
</head>
<body>
<div class="paging"></div>
</body>
<script type="text/javascript">
const common = {
totalCount : 1000,
recordsPerPage : 10,
navPage : 10
};
$('document').ready(function(){
// 페이지 정보 초기화
setPageInfo(common.recordsPerPage, common.navPage, 1);
// 데이터 조회
selectDataList();
});
// 데이터 조회
function selectDataList() {
// Ajax Success 이후 paging Set 설정
const pageInfo = getPageInfo();
paging($('.paging'), common.totalCount, pageInfo.recordsPerPage, pageInfo.navPage, pageInfo.currentPage, true);
}
// 페이징
// appendEle : Element
// totalCount : 데이터 총 카운트
// recordsPerPage : 페이지 데이터 레코드 개수
// navPage : 페이지 개수
// currentPage : 현재 페이지
// sellBoolean : 맨앞, 맨뒤 표현 여부
function paging(appendEle, totalCount, recordsPerPage, navPage, currentPage, sellBoolean){
const totalPage = Math.ceil(totalCount / recordsPerPage); // 총 페이지 수
const pageGroup = Math.ceil(currentPage / navPage); // 페이지 그룹
let last = pageGroup * navPage; // 화면에 보여질 마지막 페이지 번호
if (last > totalPage) {
last = totalPage;
}
const first = last - (navPage - 1); // 화면에 보여질 첫번째 페이지 번호
const foreFront = 1;
const prev = first - 1;
const next = last + 1;
const rearMost = totalPage;
console.log('foreFront : ' + foreFront); // 맨앞 ( << )
console.log('first : ' + first);
console.log('prev : ' + prev); // 이전 페이지 번호 ( < )
console.log('currentPage : ' + currentPage);
console.log('next : ' + next); // 다음 페이지 번호 ( > )
console.log('last : ' + last);
console.log('rearMost : ' + totalPage); // 맨뒤 ( >> )
let innerHtml = '';
// 맨앞, 이전 Set
if (prev > 0) {
sellBoolean ? innerHtml += '<a href=# onclick="movePage(' + foreFront + ')"> << </a>' : innerHtml += '';
innerHtml += '<a href=# onclick="movePage(' + prev + ')"> < </a> ';
}
// 페이지 Set
for (let i=first; i<=last; i++) {
if (currentPage === i) {
innerHtml += '<a href=# class="on" onclick="movePage(' + i + ')">' + i + '</a> ';
} else {
innerHtml += '<a href=# onclick="movePage(' + i + ')">' + i + '</a> ';
}
}
// 다음, 맨뒤 Set
if (last < totalPage) {
innerHtml += '<a href=# onclick="movePage(' + next + ')"> > </a>';
sellBoolean ? innerHtml += '<a href=# onclick="movePage(' + rearMost + ')"> >> </a>' : innerHtml += '';
}
// 페이지 생성
appendEle.empty();
appendEle.append(innerHtml);
}
// 페이지 이동
function movePage(currentPage) {
const pageInfo = getPageInfo();
setPageInfo(pageInfo.recordsPerPage, pageInfo.navPage, currentPage);
selectDataList();
}
// Page 정보 set
function setPageInfo(recordsPerPage, navPage, currentPage) {
const pageInfo = {
recordsPerPage: recordsPerPage,
navPage: navPage,
currentPage: currentPage
};
sessionStorage.setItem('pageInfo', JSON.stringify(pageInfo));
}
// Page 정보 get
function getPageInfo() {
return JSON.parse(sessionStorage.getItem('pageInfo'));
}
</script>
</html>
sellBoolean true 일때 (맨앞 맨뒤 미 표출)
sellBoolean false 일때(맨앞 맨뒤 표출)
'프로그래밍 > Front end' 카테고리의 다른 글
[Front end] jQuery 기초 (0) | 2020.02.08 |
---|---|
[Front end] HTML Title 속성 툴팁(Tooltip) (0) | 2020.02.07 |
[Front end] Javascript 파일첨부 확장자 선택 (0) | 2020.01.22 |
[Front end] Javascript 웹 브라우저 현재 URL 확인 (0) | 2020.01.14 |
[Front end] JavaScript Json Key 추출 ( keys VS getOwnPropertyNames 비교) (0) | 2020.01.10 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
TAG
- 프로그래머스
- 성능분석
- 프로그래머
- Tomcat
- 제주도 여행
- 리액트
- Java
- React
- 회고
- 이직
- 제주도 3박4일 일정
- Linux 명령어
- spring
- Collection
- 경력관리
- 오라클
- Eclipse
- 리눅스 명령어
- 정렬 알고리즘
- 오라클 내장 함수
- effective java
- sort algorithm
- 자바스크립트
- 자바
- Maven
- 개발환경
- 리액트 16
- SQL
- javascript
- 소프트웨어공학
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함