js分頁之前端代碼實(shí)現(xiàn)和請求處理
分頁之js前端實(shí)現(xiàn)和請求處理代碼,供大家參考,具體內(nèi)容如下
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>
<div class='box'>
<h2>
<span>編號</span>
<span>姓名</span>
<span>性別</span>
<span>分?jǐn)?shù)</span>
</h2>
<ul class='con' id='content'>
<li>
<span>1</span>
<span>xxx</span>
<span>男</span>
<span>90</span>
</li>
</ul>
<div 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'/>
</div>
</div>
<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');
//設(shè)定當(dāng)前也和總頁數(shù)及本次請求的數(shù)據(jù)
var n = 1,total = 0,data = null;
//實(shí)現(xiàn)頁面數(shù)據(jù)綁定及其他數(shù)據(jù)的綁定
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;
}
//事件委托實(shí)現(xiàn)分頁區(qū)域的按鈕操作 給文本框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;
}
//重新發(fā)送請求
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區(qū)域的LI跳轉(zhuǎn)事件
function bindLink(){
var oLis = content.getElementsByTagName('li');
for(var i = 0;i<oLis.length;i++){
oLis[i].onclick = function(){
// window.location.href = "detail.html";
//在跳轉(zhuǎn)的時候還需要把當(dāng)前點(diǎn)擊學(xué)員得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>分?jǐn)?shù)</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>
最終效果圖:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JS實(shí)現(xiàn)的簡單拖拽購物車功能示例【附源碼下載】
這篇文章主要介紹了JS實(shí)現(xiàn)的簡單拖拽購物車功能,涉及javascript事件響應(yīng)及頁面元素動態(tài)操作相關(guān)實(shí)現(xiàn)技巧,并附帶完整實(shí)例源碼供讀者下載參考,需要的朋友可以參考下2018-01-01
使用純JS代碼判斷字符串中有多少漢字的實(shí)現(xiàn)方法(超簡單實(shí)用)
這篇文章主要給大家介紹了js判斷字符串中有多少漢字的實(shí)現(xiàn)方法然后給大家分享了使用JS判斷輸入字符串長度的兩種方法,非常不錯具有參考借鑒價值,感興趣的朋友一起看看吧2016-11-11
微信小程序修改swiper默認(rèn)指示器樣式的實(shí)例代碼
這篇文章主要介紹了微信小程序修改swiper默認(rèn)指示器樣式的實(shí)例代碼,代碼塊是從微信開發(fā)文檔中心復(fù)制的代碼塊,在此基礎(chǔ)上修改官方swiper樣式,需要的朋友可以參考下2018-07-07
JS如何對Iframe內(nèi)外頁面進(jìn)行操作總結(jié)
iframe標(biāo)簽是一個內(nèi)聯(lián)框架,即用來在當(dāng)前HTML頁面中嵌入另一個文檔的,且所有主流瀏覽器都支持iframe標(biāo)簽,這篇文章主要給大家介紹了關(guān)于JS如何對Iframe內(nèi)外頁面進(jìn)行操作的相關(guān)資料,需要的朋友可以參考下2021-10-10
JavaScript實(shí)現(xiàn)控制打開文件另存為對話框的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)控制打開文件另存為對話框的方法,實(shí)例分析了javascript實(shí)現(xiàn)文件另存為的技巧,非常具有實(shí)用價值,需要的朋友可以參考下2015-04-04
Firefox/Chrome/Safari的中可直接使用$/$$函數(shù)進(jìn)行調(diào)試
偶然發(fā)現(xiàn)的,頁面中沒有引入Prototype和jQuery??刂婆_中敲$卻發(fā)現(xiàn)是一個函數(shù)。又試著敲$$,也是個function2012-02-02
微信小程序?qū)崿F(xiàn)導(dǎo)航欄和內(nèi)容上下聯(lián)動功能代碼
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)導(dǎo)航欄和內(nèi)容上下聯(lián)動功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06

