자바스크립트 페이징
마스터욱
0
29
0
0
2018-05-24 03:42:42
자바스크립트로 페이징을 만들었는데, 다음에 또 사용할 기회가 생길까봐 메모해 둔다~
list_string 는 php의 리스트 array 배열이다.
- list_string = $.parseJSON('<?=json_encode($new_data_all)?>');
- list_total = parseInt("<?=sizeof($new_data_all)?>");
- list_cnt = 6;
- function get_list(pg_num)
- {
- start = ( pg_num - 1 ) * list_cnt;
- string = "";
- cnt = 0;
- pcnt = 0;
- for(var key in list_string)
- {
- if(start <= cnt)
- {
- row_number = list_total - (list_cnt * (pg_num - 1)) - pcnt;
- row = list_string[key];
- out_x_class = row['out_x_res'] == "pass" ? "" : "font_red";
- out_y_class = row['out_y_res'] == "pass" ? "" : "font_red";
- out_avg_class = row['out_avg_res'] == "pass" ? "" : "font_red";
- in_x_class = row['in_x_res'] == "pass" ? "" : "font_red";
- in_y_class = row['in_y_res'] == "pass" ? "" : "font_red";
- in_avg_class = row['in_avg_res'] == "pass" ? "" : "font_red";
- dongsim_class = row['dongsim_res'] == "pass" ? "" : "font_red";
- height_1_class = row['height_1_res'] == "pass" ? "" : "font_red";
- height_2_class = row['height_2_res'] == "pass" ? "" : "font_red";
- height_3_class = row['height_3_res'] == "pass" ? "" : "font_red";
- height_4_class = row['height_4_res'] == "pass" ? "" : "font_red";
- height_avg_class = row['height_avg_res'] == "pass" ? "" : "font_red";
- string += "<tr>";
- string += " <td class='text-center'>"+row_number+"</td>";
- string += " <td class='text-center'>"+row['reg_date'].substring(2, 10)+" "+row['reg_time']+"</td>";
- string += " <td class='text-center "+out_x_class+"'>"+row['out_x']+"</td>";
- string += " <td class='text-center "+out_y_class+"'>"+row['out_y']+"</td>";
- string += " <td class='text-center "+out_avg_class+"'>"+row['out_avg']+"</td>";
- string += " <td class='text-center "+in_x_class+"'>"+row['in_x']+"</td>";
- string += " <td class='text-center "+in_y_class+"'>"+row['in_y']+"</td>";
- string += " <td class='text-center "+in_avg_class+"'>"+row['in_avg']+"</td>";
- string += " <td class='text-center "+dongsim_class+"'>"+row['dongsim']+"</td>";
- string += " <td class='text-center "+height_1_class+"'>"+row['height_1']+"</td>";
- string += " <td class='text-center "+height_2_class+"'>"+row['height_2']+"</td>";
- string += " <td class='text-center "+height_3_class+"'>"+row['height_3']+"</td>";
- string += " <td class='text-center "+height_4_class+"'>"+row['height_4']+"</td>";
- string += " <td class='text-center "+height_avg_class+"'>"+row['height_avg']+"</td>";
- string += "</tr>";
- pcnt++;
- }
- if(pcnt >= list_cnt){
- break;
- }
- cnt++;
- }
- if(string != ""){
- pghtml = paging(list_total, list_cnt, 10, pg_num);
- $("#pgbox").html(pghtml);
- }
- else{
- string += "<tr>";
- string += " <td colspan='27' class='text-center'>데이터가 없습니다.</td>";
- string += "<tr>";
- $("#pgbox").html("");
- }
- $("#listbody").html(string);
- }
- // 목록 페이징
- function paging(totalCnt, dataSize, pageSize, pageNo){
- totalCnt = parseInt(totalCnt); // 전체레코드수
- dataSize = parseInt(dataSize); // 페이지당 보여줄 데이타수
- pageSize = parseInt(pageSize); // 페이지 그룹 범위 1 2 3 5 6 7 8 9 10
- pageNo = parseInt(pageNo); // 현재페이지
- var html = new Array();
- if(totalCnt == 0){
- return "";
- }
- html.push("<nav>");
- html.push(" <ul class=\"pagination\" style='margin:0px;'>");
- // 페이지 카운트
- var pageCnt = totalCnt % dataSize;
- if(pageCnt == 0){
- pageCnt = parseInt(totalCnt / dataSize);
- }else{
- pageCnt = parseInt(totalCnt / dataSize) + 1;
- }
- var pRCnt = parseInt(pageNo / pageSize);
- if(pageNo % pageSize == 0){
- pRCnt = parseInt(pageNo / pageSize) - 1;
- }
- //이전 화살표
- if(pageNo > pageSize){
- var s2;
- if(pageNo % pageSize == 0){
- s2 = pageNo - pageSize;
- }else{
- s2 = pageNo - pageNo % pageSize;
- }
- html.push('<li><a aria-label="Previous" href=javascript:get_list("');
- html.push(s2);
- html.push('");>');
- html.push('<span aria-hidden="true">«</span>');
- html.push("</a></li>");
- }else{
- html.push('<li><a aria-label="Previous" href="#">\n');
- html.push('<span aria-hidden="true">«</span>');
- html.push('</a></li>');
- }
- //paging Bar
- for(var index=pRCnt * pageSize + 1;index<(pRCnt + 1)*pageSize + 1;index++){
- if(index == pageNo){
- html.push('<li class="active"><a href="javascript:void(0);">');
- html.push(index);
- html.push('</a></li>');
- }else{
- html.push('<li><a href=javascript:get_list("');
- html.push(index);
- html.push('");>');
- html.push(index);
- html.push('</a></li>');
- }
- if(index == pageCnt){
- break;
- }else{
- //html.push('|');
- }
- }
- //다음 화살표
- if(pageCnt > (pRCnt + 1) * pageSize){
- html.push('<li><a aria-label="Next" href=javascript:get_list("');
- html.push((pRCnt + 1)*pageSize+1);
- html.push('");>');
- html.push('<span aria-hidden="true">»</span>');
- html.push('</a></li>');
- }else{
- html.push('<li><a aria-label="Next" href="#">');
- html.push('<span aria-hidden="true">»</span>');
- html.push('</a></li>');
- }
- //console.log(html);
- html.push(" </ul>");
- html.push("</nav>");
- return html.join("");
- }