обьединить сотритовку и разбиение на страницы - таблицы
Вложений: 1
Здравствуйте эксперты!
У меня два скрипта 1) разбиение таблицы на страницы 2) сортировка таблицы по колонкам Проблема в том что сортируется только страница а не таблица в целом страницу в целом прикрепил во вложении в архиве (можно посмотреть как работает) http://твой-голос.рф/sort/hdesk.htm т.е. хочу чтобы сортировка происходила по таблице в целом по идее они так и происходит но не корректно, откройте страницу из вложения сразу станет понятно пытался подставлять функцию разбиения страницы после сортировки но чето сложно для меня не получается) Мало опыта в JS а скрипты написаны сложно для меня. Спасибо! сюда загружу кол скриптов: 1) Разбиение на страницы function func() { //$("#nav").html(''); $(document).ready(function(){ $('.sort').after('<div id="nav"></div>'); var rowsShown = 18; var rowsTotal = $("table.sort tbody tr").length; var numPages = rowsTotal/rowsShown; for(i = 0;i < numPages;i++) { var pageNum = i + 1; $('#nav').append('<a href="#" rel="'+i+'">'+pageNum+'</a> '); } $('table.sort tbody tr').hide(); $('table.sort tbody tr').slice(0, rowsShown).show(); $('#nav a:first').addClass('active'); $('#nav a').bind('click', function(){ $('#nav a').removeClass('active'); $(this).addClass('active'); var currPage = $(this).attr('rel'); //alert(currPage); var startItem = currPage * rowsShown; var endItem = startItem + rowsShown; $('table.sort tbody tr').css('opacity','0.0').hide().slice(startItem, endItem).css('display','table-row').animate({opacity:1}, 300); }); }); } 2) сортировка var img_dir = "../img/"; // папка с картинками var sort_case_sensitive = false; // вид сортировки (регистрозависимый или нет) // ф-ция, определяющая алгоритм сортировки function _sort(a, b) { var a = a[0]; var b = b[0]; var _a = (a + '').replace(/,/, '.'); var _b = (b + '').replace(/,/, '.'); if (parseFloat(_a) && parseFloat(_b)) return sort_numbers(parseFloat(_a), parseFloat(_b)); else if (!sort_case_sensitive) return sort_insensitive(a, b); else return sort_sensitive(a, b); } // ф-ция сортировки чисел function sort_numbers(a, b) { return a - b; } // ф-ция регистронезависимой сортировки function sort_insensitive(a, b) { var anew = a.toLowerCase(); var bnew = b.toLowerCase(); if (anew < bnew) return -1; if (anew > bnew) return 1; return 0; } // ф-ция регистрозависимой сортировки function sort_sensitive(a, b) { if (a < b) return -1; if (a > b) return 1; return 0; } // вспомогательная ф-ция, выдирающая из дочерних узлов весь текст function getConcatenedTextContent(node) { var _result = ""; if (node == null) { return _result; } var childrens = node.childNodes; var i = 0; while (i < childrens.length) { var child = childrens.item(i); switch (child.nodeType) { case 1: // ELEMENT_NODE case 5: // ENTITY_REFERENCE_NODE _result += getConcatenedTextContent(child); break; case 3: // TEXT_NODE case 2: // ATTRIBUTE_NODE case 4: // CDATA_SECTION_NODE _result += child.nodeValue; break; case 6: // ENTITY_NODE case 7: // PROCESSING_INSTRUCTION_NODE case 8: // COMMENT_NODE case 9: // DOCUMENT_NODE case 10: // DOCUMENT_TYPE_NODE case 11: // DOCUMENT_FRAGMENT_NODE case 12: // NOTATION_NODE // skip break; } i++; } return _result; } function sort(e) { var el = window.event ? window.event.srcElement : e.currentTarget; while (el.tagName.toLowerCase() != "td") el = el.parentNode; var a = new Array(); var name = el.lastChild.nodeValue; var dad = el.parentNode; var table = dad.parentNode.parentNode; var up = table.up; var node, arrow, curcol; for (var i = 0; (node = dad.getElementsByTagName("td").item(i)); i++) { if (node.lastChild.nodeValue == name){ curcol = i; if (node.className == "curcol"){ arrow = node.firstChild; table.up = Number(!up); }else{ node.className = "curcol"; arrow = node.insertBefore(document.createElement("img"),node.firstChild); table.up = 0; } arrow.src = img_dir + table.up + ".gif"; arrow.alt = ""; }else{ if (node.className == "curcol"){ node.className = ""; if (node.firstChild) node.removeChild(node.firstChild); } } } var tbody = table.getElementsByTagName("tbody").item(0); for (var i = 0; (node = tbody.getElementsByTagName("tr").item(i)); i++) { a[i] = new Array(); a[i][0] = getConcatenedTextContent(node.getElementsByTagName("td").item(curcol)); a[i][1] = getConcatenedTextContent(node.getElementsByTagName("td").item(1)); a[i][2] = getConcatenedTextContent(node.getElementsByTagName("td").item(0)); a[i][3] = node; } a.sort(_sort); if (table.up) a.reverse(); for (var i = 0; i < a.length; i++) { tbody.appendChild(a[i][3]); } } // ф-ция инициализации всего процесса function init(e) { if (!document.getElementsByTagName) return; for (var j = 0; (thead = document.getElementsByTagName("thead").item(j)); j++) { var node; for (var i = 0; (node = thead.getElementsByTagName("td").item(i)); i++) { if (node.addEventListener) node.addEventListener("click", sort, false); else if (node.attachEvent) node.attachEvent("onclick", sort); node.title = "Нажмите на заголовок, чтобы отсортировать колонку"; } thead.parentNode.up = 0; if (typeof(initial_sort_id) != "undefined"){ td_for_event = thead.getElementsByTagName("td").item(initial_sort_id); if (document.createEvent){ var evt = document.createEvent("MouseEvents"); evt.initMouseEvent("click", false, false, window, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, td_for_event); td_for_event.dispatchEvent(evt); } else if (td_for_event.fireEvent) td_for_event.fireEvent("onclick"); if (typeof(initial_sort_up) != "undefined" && initial_sort_up){ if (td_for_event.dispatchEvent) td_for_event.dispatchEvent(evt); else if (td_for_event.fireEvent) td_for_event.fireEvent("onclick"); } } } } // запускаем ф-цию init() при возникновении события load var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null; if (root){ if (root.addEventListener) root.addEventListener("load", init, false); else if (root.attachEvent) root.attachEvent("onload", init); } //--> |
smakat4ik,
http://tablesorter.ru/docs/ |
Часовой пояс GMT +3, время: 00:25. |