下面是我的分页显示div内容的攻略:
什么是分页显示div的内容
分页显示div的内容是指在一个较大的div中,将内容进行分页,并且通过一些交互方式,可以实现翻页、跳页等操作,从而更好地展示数据。
分页显示div的实现
分页显示div的实现可以通过JavaScript代码来实现,其中包含以下几个步骤:
计算分页
首先需要计算数据的分页情况,这可以通过获取数据总量以及每页显示数量来计算。具体的计算公式为:
// 计算总页数
var totalPage = Math.ceil(totalCount / pageSize);
// 计算当前页的数据展示范围
var fromIndex = (currentPage - 1) * pageSize;
var toIndex = currentPage * pageSize - 1;
动态生成分页相关的HTML元素
根据计算出来的分页情况,需要动态生成分页相关的HTML元素,包括页码、上一页、下一页等元素。
// 生成页码元素
for (var i = 1; i <= totalPage; i++) {
var $li = $("<li></li>").addClass("page-item").appendTo($ul);
var $link = $("<a></a>").addClass("page-link").attr("href", "javascript:void(0);").appendTo($li).text(i);
if (i == currentPage) {
$li.addClass("active");
}
}
// 生成上一页和下一页元素
var $prev = $("<li></li>").addClass("page-item").appendTo($ul);
$("<a></a>").addClass("page-link").attr("href", "javascript:void(0);").text("上一页").appendTo($prev);
if (currentPage == 1) {
$prev.addClass("disabled");
}
var $next = $("<li></li>").addClass("page-item").appendTo($ul);
$("<a></a>").addClass("page-link").attr("href", "javascript:void(0);").text("下一页").appendTo($next);
if (currentPage == totalPage) {
$next.addClass("disabled");
}
绑定分页事件
生成分页相关的HTML元素后,需要绑定相应的事件来处理翻页、跳页等操作。
// 点击页码跳转到对应的页码
$ul.on("click", ".page-link", function() {
var page = $(this).text();
if (page == currentPage) {
return;
}
currentPage = page;
loadData();
});
// 点击上一页跳转到上一页
$ul.on("click", ".page-prev", function() {
if (currentPage == 1) {
return;
}
currentPage--;
loadData();
});
// 点击下一页跳转到下一页
$ul.on("click", ".page-next", function() {
if (currentPage == totalPage) {
return;
}
currentPage++;
loadData();
});
// 跳转到指定页码
$(".btn-goto").on("click", function() {
var page = parseInt($(".input-page").val());
if (isNaN(page) || page < 1 || page > totalPage) {
alert("请输入正确的页码");
return;
}
currentPage = page;
loadData();
});
加载数据
最后需要根据当前页的数据展示范围,动态生成数据展示的HTML。
// 获取需要展示的数据
var data = getData(fromIndex, toIndex);
// 生成HTML
var $content = $("<div></div>");
$.each(data, function() {
var $item = $("<div></div>").addClass("item").appendTo($content);
$("<h3></h3>").text(this.title).appendTo($item);
$("<p></p>").text(this.content).appendTo($item);
});
// 将HTML插入到页面中
$(".data-list").empty().append($content);
示例说明
示例1
假设有一个div,用来展示一些新闻信息。为了更好地展示和浏览这些新闻,我们需要将它们进行分页,并且提供翻页和跳页等操作。
首先需要计算出新闻总量以及每页显示数量,根据这些数据计算出总页数,并在页面中显示出相应的页码、上一页和下一页元素。
<div class="news-list">
<div class="data-list"></div>
<ul class="pagination"></ul>
<div class="page-goto">
跳转到<input type="text" class="input-page"/>页<a href="javascript:void(0);" class="btn-goto">Go</a>
</div>
</div>
// 计算分页
var totalCount = newsData.length;
var pageSize = 10;
var totalPage = Math.ceil(totalCount / pageSize);
var currentPage = 1;
// 生成分页HTML
var $ul = $(".pagination");
for (var i = 1; i <= totalPage; i++) {
var $li = $("<li></li>").addClass("page-item").appendTo($ul);
var $link = $("<a></a>").addClass("page-link").attr("href", "javascript:void(0);").appendTo($li).text(i);
if (i == currentPage) {
$li.addClass("active");
}
}
var $prev = $("<li></li>").addClass("page-item page-prev").appendTo($ul);
$("<a></a>").addClass("page-link").attr("href", "javascript:void(0);").text("上一页").appendTo($prev);
if (currentPage == 1) {
$prev.addClass("disabled");
}
var $next = $("<li></li>").addClass("page-item page-next").appendTo($ul);
$("<a></a>").addClass("page-link").attr("href", "javascript:void(0);").text("下一页").appendTo($next);
if (currentPage == totalPage) {
$next.addClass("disabled");
}
然后需要绑定翻页、跳页等事件。
// 点击页码跳转到对应的页码
$ul.on("click", ".page-link", function() {
var page = $(this).text();
if (page == currentPage) {
return;
}
currentPage = page;
loadData();
});
// 点击上一页跳转到上一页
$ul.on("click", ".page-prev", function() {
if (currentPage == 1) {
return;
}
currentPage--;
loadData();
});
// 点击下一页跳转到下一页
$ul.on("click", ".page-next", function() {
if (currentPage == totalPage) {
return;
}
currentPage++;
loadData();
});
// 跳转到指定页码
$(".btn-goto").on("click", function() {
var page = parseInt($(".input-page").val());
if (isNaN(page) || page < 1 || page > totalPage) {
alert("请输入正确的页码");
return;
}
currentPage = page;
loadData();
});
最后需要动态加载数据,并将数据展示到页面中。
// 加载数据并展示
function loadData() {
// 计算展示数据的范围
var fromIndex = (currentPage - 1) * pageSize;
var toIndex = currentPage * pageSize - 1;
// 获取需要展示的数据
var data = getData(fromIndex, toIndex);
// 生成HTML
var $content = $("<div></div>");
$.each(data, function() {
var $item = $("<div></div>").addClass("item").appendTo($content);
$("<h3></h3>").text(this.title).appendTo($item);
$("<p></p>").text(this.content).appendTo($item);
});
// 将HTML插入到页面中
$(".data-list").empty().append($content);
// 更新分页HTML
$ul.find(".active").removeClass("active");
$ul.find(".page-link:contains('" + currentPage + "')").parent().addClass("active");
$prev.toggleClass("disabled", currentPage == 1);
$next.toggleClass("disabled", currentPage == totalPage);
}
loadData();
示例2
假设有一个div,用来展示一些图片,并且需要进行分页展示。在这个例子中,我们希望实现点击图片可以进行放大查看的功能。
首先需要计算每页显示的图片数量,并生成相应的HTML元素。
<div class="gallery">
<div class="data-list"></div>
<ul class="pagination"></ul>
</div>
// 计算分页
var totalCount = imageData.length;
var pageSize = 6;
var totalPage = Math.ceil(totalCount / pageSize);
var currentPage = 1;
// 生成分页HTML
var $ul = $(".pagination");
for (var i = 1; i <= totalPage; i++) {
var $li = $("<li></li>").addClass("page-item").appendTo($ul);
var $link = $("<a></a>").addClass("page-link").attr("href", "javascript:void(0);").appendTo($li).text(i);
if (i == currentPage) {
$li.addClass("active");
}
}
var $prev = $("<li></li>").addClass("page-item page-prev").appendTo($ul);
$("<a></a>").addClass("page-link").attr("href", "javascript:void(0);").text("上一页").appendTo($prev);
if (currentPage == 1) {
$prev.addClass("disabled");
}
var $next = $("<li></li>").addClass("page-item page-next").appendTo($ul);
$("<a></a>").addClass("page-link").attr("href", "javascript:void(0);").text("下一页").appendTo($next);
if (currentPage == totalPage) {
$next.addClass("disabled");
}
// 生成图片HTML
var $content = $("<div></div>");
for (var i = 0; i < pageSize; i++) {
var index = (currentPage - 1) * pageSize + i;
if (index >= totalCount) {
break;
}
var $item = $("<div></div>").addClass("item").appendTo($content);
var $img = $("<img>").appendTo($item).attr("src", imageData[index].src).attr("alt", imageData[index].desc);
}
$(".data-list").empty().append($content);
然后需要绑定翻页事件和图片放大查看事件。
// 点击页码跳转到对应的页码
$ul.on("click", ".page-link", function() {
var page = $(this).text();
if (page == currentPage) {
return;
}
currentPage = page;
loadData();
});
// 点击上一页跳转到上一页
$ul.on("click", ".page-prev", function() {
if (currentPage == 1) {
return;
}
currentPage--;
loadData();
});
// 点击下一页跳转到下一页
$ul.on("click", ".page-next", function() {
if (currentPage == totalPage) {
return;
}
currentPage++;
loadData();
});
// 图片放大查看
$(".data-list").on("click", "img", function() {
var src = $(this).attr("src");
var desc = $(this).attr("alt");
// TODO: 打开图片查看器
});
最后需要动态加载数据,并将数据展示到页面中。
// 加载数据并展示
function loadData() {
// 计算展示数据的范围
var fromIndex = (currentPage - 1) * pageSize;
var toIndex = currentPage * pageSize - 1;
// 生成HTML
var $content = $("<div></div>");
for (var i = fromIndex; i <= toIndex; i++) {
if (i >= totalCount) {
break;
}
var $item = $("<div></div>").addClass("item").appendTo($content);
var $img = $("<img>").appendTo($item).attr("src", imageData[i].src).attr("alt", imageData[i].desc);
}
// 将HTML插入到页面中
$(".data-list").empty().append($content);
// 更新分页HTML
$ul.find(".active").removeClass("active");
$ul.find(".page-link:contains('" + currentPage + "')").parent().addClass("active");
$prev.toggleClass("disabled", currentPage == 1);
$next.toggleClass("disabled", currentPage == totalPage);
}
loadData();
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js分页显示div的内容 - Python技术站