Как получить диапазон чисел?
Делаю пагинатор:
![]() На основании того на какой странице находиться юзер и сколько он выбрал отображать эму элементов, мне необходимо для него сформировать эти самые элементы и отобразить. Но я никак не могу сообразить как получить диапазон чисел, с какого и по какой элемент я должен отобразить. На выходе должно быть два числа: от и до. Например: Кол-во отображаемых эл.: 10 Страница: 1 Я должен отобразить с 1 по 10 эл. (или с 0 по 9) --- Кол-во отображаемых эл.: 50 Страница: 2 Я должен отобразить с 51 по 102 эл. (или с 49 по 99) |
CryNet, этим обычно занимается сервер, по крайней мере только он знает сколько будет страниц, объемы вывода и прочее. Если это и будет готовить клиент, то данные для него все равно должен давать сервер.
|
Цитата:
Просто я элементарно посчитать не могу))) |
Тогда я не понимаю о чем речь, ибо на странице можно оперировать только ее данными, а не страницами, о которых клиент вообще ничего не знает.
|
CryNet,
<script> const pagination = (num, length) => Array.from({length}, (_, i) => num * length - length + i) document.write(pagination(1, 10)+"<br>"); document.write(pagination(2, 10)+"<br>"); document.write(pagination(1, 50)+"<br>"); document.write(pagination(2, 50)) </script> |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Ну так прямо написано о пагинаторе, о страницах на странице... Ну как так. А объект, это иное. Да, вы можете формировать динамически пагинатор и по фильтру из объекта, при это будет вывод первой страницы с пагинатором.
Если, к примеру, данные этого объекта поместить в SQL базу на клиенте, то работать можно чисто sql запросами, ровно также как это и делает сервер - строит пагинатор и выводит запрошенные данные. Вот с чем ассоциируется ваш первый пост. :) |
<head> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> </head> <body> <div class="container"> <h3>Variant 1</h3> <div id="panel1"></div> <h3>Variant 2</h3> <div id="panel2"></div> <h3>Variant 3</h3> <div id="panel3"></div> <h3>Variant 4</h3> <div id="panel4"></div> <h3>Variant 5</h3> <div id="panel5"></div> <h3>Variant 6</h3> <div id="panel6"></div> <h3>Variant 7</h3> <div id="panel7"></div> <h3>Variant 8</h3> <div id="current_page">Click on page:</div> <div id="panel8"></div> <h3>Variant 9</h3> <div id="panel9"></div> <input type="button" class="btn btn-default" value="Show current page" id="show_page"> <h3>Variant 10</h3> <div id="panel10"></div> <input id="range" type="range" min="1" max="100" value="1" title="Range"> <br> <br> <br> </div> <script src="https://raw.githack.com/vlasenkofedor/pagination/master/pagination.js"></script> <script> Pagination( { tag: '#panel1', sizing: 'pagination-sm', current: 3 } ).onclick(showPage); Pagination( { tag: '#panel2' } ).onclick(showPage); Pagination( { tag: '#panel3', sizing: 'pagination-lg', current: 5 } ).onclick(showPage); Pagination( { tag: '#panel4', prev_next: false, current: 2 } ).onclick(showPage); Pagination( { tag: '#panel5', first_last: false, current: 4 } ).onclick(showPage); Pagination( { tag: '#panel6', prev_next: false, first_last: false } ).onclick(showPage); Pagination( { tag: '#panel7', row: 7, // кол-во в ряду total: 32, // всего step: 7, // перелистывать по current: 7, // текущая позиция prev_text: 'Назад', // prev text next_text: 'Вперед', // next text last_text: 'Вконец', // last text first_text: 'Вначало' // first text } ).onclick(showPage); Pagination( { tag: '#panel8' } ).onclick(function (page) { document.getElementById('current_page').innerHTML = 'Click on page: ' + page; }); var panel9 = Pagination( { tag: '#panel9' } ); document.getElementById('show_page').addEventListener('click', function () { alert(panel9.value); }, false); var panel10 = Pagination( { tag: '#panel10', row: 10, // кол-во в ряду total: 100 // всего } ); var range = document.getElementById('range'); range.addEventListener('change', function () { panel10.value = this.value; }, false); panel10.onclick(function (page) { range.value = page; }); function showPage(page) { alert('Page: ' + page); } </script> </body> https://github.com/vlasenkofedor/pagination |
Цитата:
|
Цитата:
На сайте с динамическими данными по большому счету нет физических страниц, все они виртуальные - количество страниц будет определяться количеством записей в базе и количеством выводимых на одной странице записей. Но тем не менее, каждый запрос клиента из пагинатора, это новый URL, так как изменяются get параметры запроса. А для браузера, это новая страница. У вас объект, и если речь идет о выводе его данных на страницу, то это срезы массива выводимые на одной и той же странице. В этом случае говорить о страницах можно с большой натяжкой, если только и в этом случае вы не изменяет url, не делаете новых запросов ... |
Vlasenko Fedor, У меня другой пагинатор: https://codepen.io/CryNet/pen/qBbjVda?editors=1010
Правда я его привёл к виду как на скрине в первом посте. |
laimas,
я понял. Спасибо ещё раз :) |
Часовой пояс GMT +3, время: 04:43. |