这篇文章主要为大家详细介绍了js分页之前端代码实现和请求处理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
分页之js前端实现和请求处理代码,供大家参考,具体内容如下
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>document</title>
<link rel="stylesheet" href="css/public.css" charset='utf-8'>
</head>
<body>
<p class='box'>
<h2>
<span>编号</span>
<span>姓名</span>
<span>性别</span>
<span>分数</span>
</h2>
<ul class='con' id='content'>
<li>
<span>1</span>
<span>xxx</span>
<span>男</span>
<span>90</span>
</li>
</ul>
<p class='page' id='page'>
<span>first</span>
<span>prev</span>
<ul class='pagenum' id='pagenum'>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<span>next</span>
<span>last</span>
<input type="text" id='numinp' value='1'/>
</p>
</p>
<script src='js/ajax.js'></script>
<script>
var pagemodule = (function(){
//获取需要操作的dom元素
var content = document.getelementbyid('content'),
page = document.getelementbyid('page'),
pagenum = document.getelementbyid('pagenum'),
numinp = document.getelementbyid('numinp');
//设定当前也和总页数及本次请求的数据
var n = 1,total = 0,data = null;
//实现页面数据绑定及其他数据的绑定
function bindhtml(){
//content bind
var str = '';
for(var i = 0;i<data.length;i++){
var curdata = data[i];
str+='<li studentid="'+curdata["id"]+'">';
str+='<span>'+curdata["id"]+'</span>';
str+='<span>'+curdata["name"]+'</span>';
str+='<span>'+(curdata["sex"]==1 ? "女" : "男")+'</span>';
str+='<span>'+curdata["score"]+'</span>';
str+='</li>';
}
content.innerhtml = str;
//page bind
str = '';
for(i = 1;i<=total;i++){
if(i===n){
str+='<li class="bg">'+i+'</li>';
continue;
}
str+='<li>'+i+'</li>';
}
pagenum.innerhtml = str;
//numinp bind
numinp.value = n;
}
//事件委托实现分页区域的按钮操作 给文本框enter键绑定操作
function bindevent(){
page.onclick = function(e){
e = e || window.event;
var tar = e.target || e.srcelement
tartag = tar.tagname.touppercase(),
tarinn = tar.innerhtml;
if(tartag==="span"){
if(tarinn==="first"){
if(n===1){
return;
}
n = 1;
}
if(tarinn==="last"){
if(n === total){
return;
}
n = total;
}
if(tarinn==="prev"){
if(n === 1){
return;
}
n--;
}
if(tarinn==="next"){
if(n === total){
return;
}
n++;
}
}
if(tartag==="li"){
if(n === parsefloat(tarinn)){
return;
}
n = parsefloat(tarinn);
}
//input
if(tartag==="input"){
return;
}
//重新发送请求
sendajax()
}
numinp.onkeyup = function(e){
e = e || window.event;
if(e.keycode===13){//enter键
var val = parsefloat(this.value.replace(/^ +| +$/,''));
if(isnan(val)){
this.value = n;
return;
}
val = math.round(val)
if(val<1){
n = 1;
}else if(val>total){
n = total;
}else{
n = val;
}
sendajax();
}
}
}
//content区域的li跳转事件
function bindlink(){
var olis = content.getelementsbytagname('li');
for(var i = 0;i<olis.length;i++){
olis[i].onclick = function(){
// window.location.href = "detail.html";
//在跳转的时候还需要把当前点击学员得id传到详情页面
window.open("detail.html?id="+this.getattribute('studentid'));
}
}
}
function sendajax(){
ajax({
url:"/getlist?n="+n,
success:function(jsondata){
if(jsondata && jsondata.code===0){
total = jsondata["total"];
data = jsondata['data'];
bindhtml();
bindlink();
}
}
})
}
//模块入口
function init(){
sendajax();
bindevent();
}
return {
init:init
}
})()
pagemodule.init();
</script>
</body>
</html>
detail.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>document</title>
<link rel="stylesheet" href="css/public.css" charset='utf-8'>
</head>
<body>
<ul class='box2' id='box2'>
<li>
<span>编号</span>
<span>4</span>
</li>
<li>
<span>姓名</span>
<span>xxx</span>
</li>
<li>
<span>性别</span>
<span>男</span>
</li>
<li>
<span>分数</span>
<span>99</span>
</li>
</ul>
<script src='js/ajax.js'></script>
<script>
string.prototype.queryurlparameter = function(){
//parameter
var obj = {},
reg = /([^?=]+)=([^?=]+)/g;
this.replace(reg,function(){
var key = arguments[1],
value = arguments[2];
obj[key] = value;
});
//->hash
// reg = /#([^?=]+)/;
// if (reg.test(this)) {
// obj['hash'] = reg.exec(this)[1];
// }
return obj;
}
var detailmoduel = (function(){
var data = null,urlid = window.location.href.queryurlparameter().id,obox = document.getelementbyid('box2');
function bindhtml(){
var str = "";
str+="<li><span>编号</span><span>"+data["id"]+"</span></li>";
str+="<li><span>编号</span><span>"+data["name"]+"</span></li>";
str+="<li><span>编号</span><span>"+(data["sex"]==1 ? "男" : "女")+"</span></li>";
str+="<li><span>编号</span><span>"+data["score"]+"</span></li>";
obox.innerhtml = str;
}
function init(){
ajax({
url:"/getinfo?id="+urlid,
success:function(jsondata){
if(jsondata && jsondata.code===0){
data = jsondata["data"];
bindhtml();
}
}
})
}
return {
init:init
}
})()
detailmoduel.init();
</script>
</body>
</html>
最终效果图:
以上就是javascript分页功能的前端代码实现和请求处理详解的详细内容。