纯 javascript 分页 select 每页项目
pure javascript pagination select item per page
我有以下代码。为每页显示项目传递 select 值
问题:值看似正确传递,但页面实时显示不正确
任何人都可以用我的代码提出建议吗?
var current_page = 1;
var item_per_page;
var pagelength = document.getElementById("listingTable").rows.length
function pageselect() {
item_per_page = document.getElementById("selectpage").value;
}
pageselect();
function prevPage() {
if (current_page > 1) {
current_page--;
changePage(current_page);
}
}
function nextPage() {
if (current_page < numPages()) {
current_page++;
changePage(current_page);
}
}
function changePage(page) {
var btn_next = document.getElementById("btn_next");
var btn_prev = document.getElementById("btn_prev");
var listing_table = document.getElementById("listingTable");
var page_span = document.getElementById("page");
// Validate page
if (page < 1) page = 1;
if (page > numPages()) page = numPages();
[...listing_table.getElementsByTagName('tr')].forEach((tr) => {
tr.style.display = 'none'; // reset all to not display
});
listing_table.rows[0].style.display = ""; // display the title row
for (var i = (page - 1) * item_per_page + 1; i < (page * item_per_page) + 1; i++) {
if (listing_table.rows[i]) {
listing_table.rows[i].style.display = ""
} else {
continue;
}
}
page_span.innerHTML = page + "/" + numPages();
if (page == 1) {
btn_prev.style.visibility = "hidden";
} else {
btn_prev.style.visibility = "visible";
}
if (page == numPages()) {
btn_next.style.visibility = "hidden";
} else {
btn_next.style.visibility = "visible";
}
}
function numPages() {
return Math.ceil((pagelength - 1) / item_per_page);
}
window.onload = function() {
changePage(current_page);
};
<select id="selectpage" onchange="pageselect()">
<option value="1">1</option>
<option value="3">3</option>
</select>
<table id="listingTable">
<tr>
<th>Company</th>
<th>Contact</th>
<th>Country</th>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Maria Anders</td>
<td>Germany</td>
</tr>
<tr>
<td>Centro comercial Moctezuma</td>
<td>Francisco Chang</td>
<td>Mexico</td>
</tr>
<tr>
<td>Ernst Handel</td>
<td>Roland Mendel</td>
<td>Austria</td>
</tr>
<tr>
<td>Island Trading</td>
<td>Helen Bennett</td>
<td>UK</td>
</tr>
<tr>
<td>Laughing Bacchus Winecellars</td>
<td>Yoshi Tannamuri</td>
<td>Canada</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Giovanni Rovelli</td>
<td>Italy</td>
</tr>
</table>
<a onclick="prevPage()" id="btn_prev">Prev</a>
<a onclick="nextPage()" id="btn_next">Next</a> page: <span id="page"></span>
抱歉我的英语不好,无法解释我需要的所有内容,希望你能理解我的需要
谢谢!
您只需要在 pageselect
上致电 changePage
。
var current_page = 1;
var item_per_page;
var pagelength = document.getElementById("listingTable").rows.length
function pageselect() {
item_per_page = document.getElementById("selectpage").value;
changePage(current_page);
}
pageselect();
function prevPage() {
if (current_page > 1) {
current_page--;
changePage(current_page);
}
}
function nextPage() {
if (current_page < numPages()) {
current_page++;
changePage(current_page);
}
}
function changePage(page) {
var btn_next = document.getElementById("btn_next");
var btn_prev = document.getElementById("btn_prev");
var listing_table = document.getElementById("listingTable");
var page_span = document.getElementById("page");
// Validate page
if (page < 1) page = 1;
if (page > numPages()) page = numPages();
[...listing_table.getElementsByTagName('tr')].forEach((tr) => {
tr.style.display = 'none'; // reset all to not display
});
listing_table.rows[0].style.display = ""; // display the title row
for (var i = (page - 1) * item_per_page + 1; i < (page * item_per_page) + 1; i++) {
if (listing_table.rows[i]) {
listing_table.rows[i].style.display = ""
} else {
continue;
}
}
page_span.innerHTML = page + "/" + numPages();
if (page == 1) {
btn_prev.style.visibility = "hidden";
} else {
btn_prev.style.visibility = "visible";
}
if (page == numPages()) {
btn_next.style.visibility = "hidden";
} else {
btn_next.style.visibility = "visible";
}
}
function numPages() {
return Math.ceil((pagelength - 1) / item_per_page);
}
window.onload = function() {
changePage(current_page);
};
<select id="selectpage" onchange="pageselect()">
<option value="1">1</option>
<option value="3">3</option>
</select>
<table id="listingTable">
<tr>
<th>Company</th>
<th>Contact</th>
<th>Country</th>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Maria Anders</td>
<td>Germany</td>
</tr>
<tr>
<td>Centro comercial Moctezuma</td>
<td>Francisco Chang</td>
<td>Mexico</td>
</tr>
<tr>
<td>Ernst Handel</td>
<td>Roland Mendel</td>
<td>Austria</td>
</tr>
<tr>
<td>Island Trading</td>
<td>Helen Bennett</td>
<td>UK</td>
</tr>
<tr>
<td>Laughing Bacchus Winecellars</td>
<td>Yoshi Tannamuri</td>
<td>Canada</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Giovanni Rovelli</td>
<td>Italy</td>
</tr>
</table>
<a onclick="prevPage()" id="btn_prev">Prev</a>
<a onclick="nextPage()" id="btn_next">Next</a> page: <span id="page"></span>
我有以下代码。为每页显示项目传递 select 值
问题:值看似正确传递,但页面实时显示不正确
任何人都可以用我的代码提出建议吗?
var current_page = 1;
var item_per_page;
var pagelength = document.getElementById("listingTable").rows.length
function pageselect() {
item_per_page = document.getElementById("selectpage").value;
}
pageselect();
function prevPage() {
if (current_page > 1) {
current_page--;
changePage(current_page);
}
}
function nextPage() {
if (current_page < numPages()) {
current_page++;
changePage(current_page);
}
}
function changePage(page) {
var btn_next = document.getElementById("btn_next");
var btn_prev = document.getElementById("btn_prev");
var listing_table = document.getElementById("listingTable");
var page_span = document.getElementById("page");
// Validate page
if (page < 1) page = 1;
if (page > numPages()) page = numPages();
[...listing_table.getElementsByTagName('tr')].forEach((tr) => {
tr.style.display = 'none'; // reset all to not display
});
listing_table.rows[0].style.display = ""; // display the title row
for (var i = (page - 1) * item_per_page + 1; i < (page * item_per_page) + 1; i++) {
if (listing_table.rows[i]) {
listing_table.rows[i].style.display = ""
} else {
continue;
}
}
page_span.innerHTML = page + "/" + numPages();
if (page == 1) {
btn_prev.style.visibility = "hidden";
} else {
btn_prev.style.visibility = "visible";
}
if (page == numPages()) {
btn_next.style.visibility = "hidden";
} else {
btn_next.style.visibility = "visible";
}
}
function numPages() {
return Math.ceil((pagelength - 1) / item_per_page);
}
window.onload = function() {
changePage(current_page);
};
<select id="selectpage" onchange="pageselect()">
<option value="1">1</option>
<option value="3">3</option>
</select>
<table id="listingTable">
<tr>
<th>Company</th>
<th>Contact</th>
<th>Country</th>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Maria Anders</td>
<td>Germany</td>
</tr>
<tr>
<td>Centro comercial Moctezuma</td>
<td>Francisco Chang</td>
<td>Mexico</td>
</tr>
<tr>
<td>Ernst Handel</td>
<td>Roland Mendel</td>
<td>Austria</td>
</tr>
<tr>
<td>Island Trading</td>
<td>Helen Bennett</td>
<td>UK</td>
</tr>
<tr>
<td>Laughing Bacchus Winecellars</td>
<td>Yoshi Tannamuri</td>
<td>Canada</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Giovanni Rovelli</td>
<td>Italy</td>
</tr>
</table>
<a onclick="prevPage()" id="btn_prev">Prev</a>
<a onclick="nextPage()" id="btn_next">Next</a> page: <span id="page"></span>
抱歉我的英语不好,无法解释我需要的所有内容,希望你能理解我的需要
谢谢!
您只需要在 pageselect
上致电 changePage
。
var current_page = 1;
var item_per_page;
var pagelength = document.getElementById("listingTable").rows.length
function pageselect() {
item_per_page = document.getElementById("selectpage").value;
changePage(current_page);
}
pageselect();
function prevPage() {
if (current_page > 1) {
current_page--;
changePage(current_page);
}
}
function nextPage() {
if (current_page < numPages()) {
current_page++;
changePage(current_page);
}
}
function changePage(page) {
var btn_next = document.getElementById("btn_next");
var btn_prev = document.getElementById("btn_prev");
var listing_table = document.getElementById("listingTable");
var page_span = document.getElementById("page");
// Validate page
if (page < 1) page = 1;
if (page > numPages()) page = numPages();
[...listing_table.getElementsByTagName('tr')].forEach((tr) => {
tr.style.display = 'none'; // reset all to not display
});
listing_table.rows[0].style.display = ""; // display the title row
for (var i = (page - 1) * item_per_page + 1; i < (page * item_per_page) + 1; i++) {
if (listing_table.rows[i]) {
listing_table.rows[i].style.display = ""
} else {
continue;
}
}
page_span.innerHTML = page + "/" + numPages();
if (page == 1) {
btn_prev.style.visibility = "hidden";
} else {
btn_prev.style.visibility = "visible";
}
if (page == numPages()) {
btn_next.style.visibility = "hidden";
} else {
btn_next.style.visibility = "visible";
}
}
function numPages() {
return Math.ceil((pagelength - 1) / item_per_page);
}
window.onload = function() {
changePage(current_page);
};
<select id="selectpage" onchange="pageselect()">
<option value="1">1</option>
<option value="3">3</option>
</select>
<table id="listingTable">
<tr>
<th>Company</th>
<th>Contact</th>
<th>Country</th>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Maria Anders</td>
<td>Germany</td>
</tr>
<tr>
<td>Centro comercial Moctezuma</td>
<td>Francisco Chang</td>
<td>Mexico</td>
</tr>
<tr>
<td>Ernst Handel</td>
<td>Roland Mendel</td>
<td>Austria</td>
</tr>
<tr>
<td>Island Trading</td>
<td>Helen Bennett</td>
<td>UK</td>
</tr>
<tr>
<td>Laughing Bacchus Winecellars</td>
<td>Yoshi Tannamuri</td>
<td>Canada</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Giovanni Rovelli</td>
<td>Italy</td>
</tr>
</table>
<a onclick="prevPage()" id="btn_prev">Prev</a>
<a onclick="nextPage()" id="btn_next">Next</a> page: <span id="page"></span>