【发布时间】:2016-10-11 19:24:28
【问题描述】:
我正在尝试为我的<li> 链接创建一个简单的(仅下一个前一个按钮)javascript 分页。
这是我的链接列表:
<div class="panel-body">
<div id="listingTable">
<ul id = "Mylinks" class="paging">
<li style="display: none;"><a href="http://site1.com" rel="nofollow">Description1</a></li>
<li style="display: none;"><a href="http://site2.com" rel="nofollow">Description2</a></li>
<li style="display: none;"><a href="http://site3.com" rel="nofollow">Description3</a></li>
<li style="display: none;"><a href="http://site4.com" rel="nofollow">Description4</a></li>
<li style="display: none;"><a href="http://site5.com" rel="nofollow">Description5</a></li>
<li style="display: none;"><a href="http://site6.com" rel="nofollow">Description6</a></li>
<li style="display: none;"><a href="http://site7.com" rel="nofollow">Description7</a></li>
<li style="display: none;"><a href="http://site100.com" rel="nofollow">Description100</a></li>
//Number of links is unlimited.
</ul>
</div>
<ul class="pager">
<li><a href="javascript:prevPage()" id="btn_prev">previous</a></li>
<li><a href="javascript:nextPage()" id="btn_next">next</a></li>
</ul>
</div>
我正在使用引导 css。 我不想使用 jquery。 我的代码几乎可以工作了。
var current_page = 1;
var records_per_page = 3;
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();
var list = document.getElementById('linkbox'),items = list.childNodes;
for (var i = (page-1) * records_per_page; i < (page * records_per_page) && i < childNodes.length; i++) {
items[i].style.display = "block";
}
}
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(objJson.length / records_per_page);
}
window.onload = function() {
changePage(1);
};
但问题是var objJson = []
我想将style="display: block;" 用于page1,并将style="display: none;" 用于其余链接。当页面改变时,样式也会改变。
更新:
我把我的链接直接放在<ul>里面我认为把它们放在java脚本中并只显示它们的一部分是不好的主意,区别是:
谷歌考虑<ul></ul> 中的所有链接,但是当我将它们放入javascript 时,只有page1 在<ul></ul> 中。
我应该通过以下方式获取所有链接:
var list = document.getElementById('Mylinks'),
items = list.childNodes;
for (var i = 0, length = childNodes.length; i < length; i++)
{
if (items[i].nodeType != 1) {
continue;
}
items[i].style.display = "block";
}
并将第 1 页的样式更新为 style="display: block;"
【问题讨论】:
-
您的链接 (
<li><a href="http://site1.com" rel="nofollow">Description1</a></li>) 是使用您的objJson动态创建的? -
动态但使用php,直接在
<ul class="paging"></ul>内部我想我应该删除var objJson = []并更改内部代码。 @SteevePitis -
Arf 我用 objJson 做了一些事情。尝试对 php 执行相同操作并删除我的
initPages
标签: javascript pagination