Как получить диапазон чисел?
Делаю пагинатор:
![]() На основании того на какой странице находиться юзер и сколько он выбрал отображать эму элементов, мне необходимо для него сформировать эти самые элементы и отобразить. Но я никак не могу сообразить как получить диапазон чисел, с какого и по какой элемент я должен отобразить. На выходе должно быть два числа: от и до. Например: Кол-во отображаемых эл.: 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:50. |