25.06.2020, 13:26
|
Профессор
|
|
Регистрация: 02.01.2019
Сообщений: 151
|
|
Как получить диапазон чисел?
Делаю пагинатор:
На основании того на какой странице находиться юзер и сколько он выбрал отображать эму элементов, мне необходимо для него сформировать эти самые элементы и отобразить. Но я никак не могу сообразить как получить диапазон чисел, с какого и по какой элемент я должен отобразить. На выходе должно быть два числа: от и до.
Например:
Кол-во отображаемых эл.: 10
Страница: 1
Я должен отобразить с 1 по 10 эл. (или с 0 по 9)
---
Кол-во отображаемых эл.: 50
Страница: 2
Я должен отобразить с 51 по 102 эл. (или с 49 по 99)
|
|
25.06.2020, 13:34
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
CryNet, этим обычно занимается сервер, по крайней мере только он знает сколько будет страниц, объемы вывода и прочее. Если это и будет готовить клиент, то данные для него все равно должен давать сервер.
|
|
25.06.2020, 13:41
|
Профессор
|
|
Регистрация: 02.01.2019
Сообщений: 151
|
|
Сообщение от laimas
|
CryNet, этим обычно занимается сервер, по крайней мере только он знает сколько будет страниц, объемы вывода и прочее. Если это и будет готовить клиент, то данные для него все равно должен давать сервер.
|
Я с вами согласен. Но в моём случае все на фронте: генерация страниц на основе фильтров, конкретной страницы, etc.
Просто я элементарно посчитать не могу)))
|
|
25.06.2020, 13:52
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Тогда я не понимаю о чем речь, ибо на странице можно оперировать только ее данными, а не страницами, о которых клиент вообще ничего не знает.
|
|
25.06.2020, 14:23
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
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>
|
|
25.06.2020, 15:14
|
Профессор
|
|
Регистрация: 02.01.2019
Сообщений: 151
|
|
Сообщение от laimas
|
Тогда я не понимаю о чем речь, ибо на странице можно оперировать только ее данными, а не страницами, о которых клиент вообще ничего не знает.
|
Сейчас объясню. Есть страничка. С бэканда приходит объект, а я на фронте на JS генерирую HTML и распихиваю данные по HTML-тегам, разбивая по 10, 20 или 50 элементов, ну и выплёвую на страницу. Отображаю пагинатор. Юзер кликнет на "отображать по 20" - отдам 20 элементов. Кликнет на 2 вторую страницу - первую 20 элементов удалю, а отображу следующую 20 и т.д.. Аналог SPA, только на чистом JS и без виртуального DOM.
|
|
25.06.2020, 15:14
|
Профессор
|
|
Регистрация: 02.01.2019
Сообщений: 151
|
|
Сообщение от рони
|
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>
|
Спасибо, впрочем, как и всегда
|
|
25.06.2020, 15:17
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от CryNet
|
С бэканда приходит объект
|
Ну так с этого и надо было начитать. А далее как рони, а выводить срез массива от выбранной страницы по номеру страницы умноженному на выбранное пользователем число отображаемых.
|
|
25.06.2020, 15:25
|
Профессор
|
|
Регистрация: 02.01.2019
Сообщений: 151
|
|
Сообщение от laimas
|
Ну так с этого и надо было начитать. А далее как рони, а выводить срез массива от выбранной страницы по номеру страницы умноженному на выбранное пользователем число отображаемых.
|
Я просто не мог понять, что именно вам не понятно. Прошу прощения
|
|
25.06.2020, 15:32
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Ну так прямо написано о пагинаторе, о страницах на странице... Ну как так. А объект, это иное. Да, вы можете формировать динамически пагинатор и по фильтру из объекта, при это будет вывод первой страницы с пагинатором.
Если, к примеру, данные этого объекта поместить в SQL базу на клиенте, то работать можно чисто sql запросами, ровно также как это и делает сервер - строит пагинатор и выводит запрошенные данные. Вот с чем ассоциируется ваш первый пост.
|
|
|
|