【发布时间】:2021-09-26 09:25:25
【问题描述】:
我正在使用表格来显示数据库中的值,并使用 JQuery 进行分页。这总体上是有效的。但是,当结果只有一页时,分页显示:
这不是我想要的;第 1 页的链接只能显示一次。
当它显示更多页面的数据时,它工作正常:
这是表格和按钮的代码
function getProducts() {
$.get('/get-products', parameters).then(res => {
console.log(res);
let products = res.data;
preview = res.current_page > 1 ? true : false;
next = res.current_page < res.last_page ? true : false;
preview ? $('#previous').removeAttr("disabled") : $('#previous').attr('disabled', 'disabled');
next ? $('#next').removeAttr("disabled") : $('#next').attr('disabled', 'disabled');
let table_body = $('#tbody');
table_body.empty();
var html = '';
$.each(products, function(index, val) {
html += "<tr> " +
"<td>" + val.name + "</td>" +
"<td>" + val.quantity + "</td>" +
"<td>" + val.price +"<p> Lei </p>"+"</td>" +
"<td>" + val.status.name + "</td>" +
"<td>" + val.description + "</td>" +
"<td>" + val.technics + "</td>" +
"<td>" + "<a class='btn btn-warning' href='/editareprodus/"+ val.id +"'>Edit</a>" + "</td>" +
"<td>" + "<a class='btn btn-danger' onclick=deleteItem("+ val.id +")>Delete</a>" + "</td>" +
"</tr>";
});
table_body.append(html);
$('.page_button').remove();
var buttons = '';
for(var i = 1; i < res.last_page+1; i++) {
if(i == 1) {
if(i == res.current_page) {
buttons += '<button type="button" class="btn btn-danger page_button" onclick="setPageParameter('+i+')">'+i+'</button>';
} else{
buttons += '<button type="button" class="btn btn-primary page_button" onclick="setPageParameter('+i+')">'+i+'</button>';
}
}
if(i == res.last_page) {
if(i == res.current_page) {
buttons += '<button type="button" class="btn btn-danger page_button" onclick="setPageParameter('+i+')">'+i+'</button>';
} else{
buttons += '<button type="button" class="btn btn-primary page_button" onclick="setPageParameter('+i+')">'+i+'</button>';
}
}
if(i == res.current_page-2 && res.current_page-2 >= 2 ) {
buttons += '<span class="page_button">...</span>';
}
if(i == res.current_page+2 && res.current_page+2 < res.last_page) {
buttons += '<span class="page_button">...</span>';
}
if((i != 1 && i != res.last_page) && (i == res.current_page-1 || i == res.current_page || i == res.current_page+1)) {
if(i == res.current_page) {
buttons += '<button type="button" class="btn btn-danger page_button" onclick="setPageParameter('+i+')">'+i+'</button>';
} else {
buttons += '<button type="button" class="btn btn-primary page_button" onclick="setPageParameter('+i+')">'+i+'</button>';
}
}
}
$('#previous').after(buttons)
});
}
我将添加上一页和下一页按钮的代码,以便您可以看到它们,但这些工作正常:
function previewPage() {
if(preview) {
parameters.page--;
getProducts();
}
}
function nextPage() {
if(next) {
parameters.page++;
getProducts();
}
}
function setPageParameter(page) {
this.parameters.page = page;
getProducts();
}
当我有一页而不是现在发生的两个按钮时,如何更改代码以显示一页按钮?
【问题讨论】:
-
仅供参考:我已经编辑了您的问题,希望能让读者更容易理解。值得注意的是,我重写了标题,修复了一些小标点问题,删除了不必要的标签(例如html),并将图片移动到内联。这可能有助于您的问题获得更多关注。
标签: javascript jquery pagination jquery-pagination