c语言编程笔录

首页 >   > 笔记大全

笔记大全

XML创建可排序 分页的数据显示页面

更新时间:2023-11-08

第一段:XML数据的获取与解析

首先,需要获取XML数据并解析,可使用AJAX异步请求获取XML文件数据,然后利用DOM解析XML字符串,获取XML元素信息,并将其存储到数组中,如下示例:

var xmlhttp;
var xmlDoc;

if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
} else {
    // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
    if (this.readyState==4 && this.status==200) {
        xmlDoc=this.responseXML;
        var dataArr=[];
        var dataNodes=xmlDoc.getElementsByTagName("data");
        for (var i=0; i < dataNodes.length; i++) {
            var id=dataNodes[i].getElementsByTagName("id")[0].childNodes[0].nodeValue;
            var name=dataNodes[i].getElementsByTagName("name")[0].childNodes[0].nodeValue;
            var age=dataNodes[i].getElementsByTagName("age")[0].childNodes[0].nodeValue;
            dataArr.push({id: id, name: name, age: age});
        }
    }
};
xmlhttp.open("GET", "data.xml", true);
xmlhttp.send();

第二段:数据排序与分页功能的实现

排序与分页功能的实现都可以使用JavaScript来完成,排序可使用数组的sort方法,将排序条件传入即可,分页则需要根据当前页码和每页显示的数据量来截取数据渲染到页面,如下示例:

//排序
dataArr.sort(function(a, b) {
    return a.age - b.age;
});


//分页
var pageSize=10; //每页显示10条数据
var currentPage=1; //默认显示第一页
var totalPage=Math.ceil(dataArr.length / pageSize); //计算总页数
function renderData(currentPage) {
    var start=(currentPage - 1) * pageSize;
    var end=currentPage * pageSize;
    end=end > dataArr.length ? dataArr.length : end;
    var html="";
    for (var i=start; i < end; i++) {
        html +="<tr><td>" + dataArr[i].id + "</td><td>" + dataArr[i].name + "</td><td>" + dataArr[i].age + "</td></tr>";
    }
    document.getElementById("tableBody").innerHTML=html;
}
renderData(currentPage);

第三段:分页组件的实现

为了方便用户直观地看到当前的分页状态,可以使用分页组件实现,简单的分页组件可以使用HTML和CSS实现,稍复杂的可以使用Vue或React框架,如下示例:

<div class="pager">
    <ul>
        <li v-if="currentPage > 1" @click="currentPage--"><a>上一页</a></li>
        <li v-for="page in pages" :class="{active: currentPage===page}" @click="currentPage=page"><a>{{page}}</a></li>
        <li v-if="currentPage < totalPage" @click="currentPage++"><a>下一页</a></li>
    </ul>
</div>

<style>
    .pager {
        text-align: center;
        margin-top: 20px;
    }
    .pager ul {
        display: inline-block;
        margin: 0;
        padding: 0;
    }
    .pager li {
        display: inline-block;
        margin: 0 5px;
        padding: 5px 10px;
        border: 1px solid #ccc;
        background-color: #f5f5f5;
        cursor: pointer;
    }
    .pager .active {
        background-color: #ccc;
    }
</style>

第四段:总结

XML创建可排序分页的数据显示页面,需要使用Ajax异步获取XML数据并解析获取XML元素信息存储到数组中,使用数组的sort方法实现排序,利用JavaSript截取数组并渲染到页面实现分页功能,使用分页组件为用户提供更直观的页面交互和分页状态,提高用户体验。