Добрый день!
Есть функция пагинации:
function Pagination() {
var rowsShown = $('.quantity__link_active').data('value');
if(rowsShown === 'all') {
$('.table__row').show();
$('.pageList__link').remove();
} else {
var rowsTotal = $('.table__row').length;
var numPages = rowsTotal/rowsShown;
$('.pageList__link').remove();
for(var i = 0; i < numPages; i++) {
var pageNum = i + 1;
$('.pageList').append('<a href="#" rel="'+ i +'" class="pageList__link">'+ pageNum +'</a> ');
}
$('.pageList__link:first').addClass('pageList__link_active');
$('.table__row').hide()
for(var i = 0; i <= rowsShown - 1; i++) {
$($('.table__row')[i]).show();
}
$('.pageList__link').on('click', function(){
$('.pageList__link').removeClass('pageList__link_active');
$(this).addClass('pageList__link_active');
$('.table__row').hide()
var currPage = $(this).attr('rel');
var startItem = currPage * rowsShown;
var endItem = startItem + rowsShown - 1;
for(var i = startItem; i < endItem; i++) {
$($('.table__row')[i]).show();
}
return false;
});
}
};
При небольшом количестве страниц всё работает изумительно, но когда страниц становится больше (6-15) выглядит плохо.
Необходимо реализовать замену страниц троеточием, если страниц больше 5. Например:
1, 2, 3, 4, 5...20
1...4,5,6,7, 8...20
Подозреваю, что нужно использовать for и if else, чтобы достигнуть данного результата, но никак не могу сообразить, как именно их использовать в данной ситуации.
Подскажите пожалуйста, как это реализовать, если можно, опишите алгоритм сокращения.
Без готовых решений и плагинов.
UPD: Думаю, что нужно использовать метод slice().