[英]How to add pagination to an XML feed?
我正在使用 javascript 将 XML 制作成 HTML。 我已遵循本指南:http://www.w3schools.com/xml/xml_to_html.asp
如何向 XML 提要添加分页?
根据您在问题中提供的 url,您可以对数据进行分页。
html内容:
<div id="content"></div>
<div id="pagination"></div>
Javascript 代码:
var page = 1, perPage = 4, content = document.getElementById('content'),
pagination = document.getElementById('pagination'), records;
function paganation(page)
{
var nextMaxItem = perPage * page;
var fromItem = (page - 1) * perPage;
var maxPages = records.length / perPage;
var xmlContent = "<table border='1'>";
for (var i = fromItem; i < nextMaxItem; i++) {
xmlContent += "<tr><td>";
xmlContent += records[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue;
xmlContent += "</td><td>";
xmlContent += records[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue;
xmlContent += "</td></tr>";
}
xmlContent += "</table>";
content.innerHTML = xmlContent;
var paginationContent = "";
var previous = page - 1;
if (page > 1) {
paginationContent += '<a href="javascript:paganation('+previous+');">Back</a>';
} else {
paginationContent += "Back";
}
for (var j = 1; j < Math.ceil(maxPages); j++) {
paginationContent += " ";
paginationContent += '<a href="javascript:paganation('+j+');">'+j+'</a>';
paginationContent += " ";
}
var next = page + 1;
if (next <= maxPages) {
paginationContent += '<a href="javascript:paganation('+next+');">Next</a>';
} else {
paginationContent += "Next";
}
pagination.innerHTML = paginationContent;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","cd_catalog.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
records = xmlDoc.getElementsByTagName("CD");
paganation(1);
一种选择是 Ruby gem, will_paginate (本页解释了使用它的基础知识)。
如果您正在使用 Rails 3 进行开发,那么这篇博文可能会很有用。
如果你需要对XML output本身进行分页,不管你选择哪种方案,还是要分页,这样分页就有一定的基础了。 换句话说,将 XML 数据中的每一行作为不同的记录处理,就像数据库处理它一样,然后分页。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.