Я пытаюсь создать разбитую на страницы таблицу.В этом все работает нормально, но есть проблема, в которой я застрял.Я хочу точки между номерами с нумерацией страниц, но вместо этого печатаются все цифры.Я хочу что-то вроде этого:
if 1 => 1 2 3 ... 15(last page)
if 2 => 1 2 3 ...15
if 3 => 1 2 3 4 ... 15
if 4 => 1...3 4 5...15
if 15 =>1...13 14 15
if 14=>1... 13 14 15
if 13 => 1 ... 12 13 14 15
if 12 => 1 ... 11 12 13 ... 15
Я пытался объединить точки в строке, но он продолжает выдавать ошибку.
let start = 1;
let limit = 1;
function getUrl() {
return 'https://reqres.in/api/users?page=' + start + '&per_page=' + limit;
}
function getData(url) {
fetch(url)
.then(response => response.json())
.then(data => loadDataIntoTable(data))
.catch(err => console.log(err));
}
function loadDataIntoTable(data) {
let id = [];
let email = [];
let firstName = [];
let lastName = [];
let avatar = [];
data['data'].forEach((pagi) => {
id.push(pagi.id);
email.push(pagi.email);
firstName.push(pagi.first_name);
lastName.push(pagi.last_name);
avatar.push(pagi.avatar);
return pagi.id;
});
let tableBody = document.getElementById('pagi-body');
let html = "";
for (let i = 0; i < email.length; i++) {
html += "<tr>";
html += "<td>" + id[i] + "</td>";
html += "<td>" + email[i] + "</td>";
html += "<td>" + firstName[i] + "</td>";
html += "<td>" + lastName[i] + "</td>";
html += "<td><img alt='' src=" + avatar[i] + "></td>";
html += "</tr>";
}
tableBody.innerHTML = html;
}
function init() {
const url = getUrl();
getData(url);
}
init();
totalcount = 12;
var i;
var text = "";
for (i = 1; i <= 12; i++) {
text += "<button onclick=\"handlevent(" + i + ")\">" + (i) + "</button>";
}
document.getElementById("page").innerHTML = text;
function page(prev, dotted, next) {
if (prev) {
if (start > 1) {
start--;
}
url = getUrl();
getData(url);
}
if (dotted) {
console.log("dotted");
}
if (next) {
if (start < totalcount) {
start++;
}
url = getUrl();
getData(url);
}
}
function handlevent(value) {
start = value;
url = getUrl();
getData(url);
}
<ul>
<li>
<button id="left" onclick="page('prev','','')" class="disable">Prev</button>
</li>
<li id="page" onclick="page('','dots','')"></li>
<li id="pagination"></li>
<li>
<button id="right" onclick="page('','','next')">Next</button>
</li>
</ul>
Вывод, который я получаю, похож на 1 2 3 4 5 6 7 8 9 10 11 12
но я хочу:
if 1 => 1 2 3 ... 15(last page) if 2 => 1 2 3 ...15 if 3 => 1 2 3
4 ... 15 if 4 => 1...3 4 5...15 if 15 =>1...13 14 15 if 14=>1...
13 14 15 if 13 => 1 ... 12 13 14 15 if 12 => 1 ... 11 12 13 ... 15