js實現(xiàn)提交前對列表數(shù)據(jù)的增刪改查
js實現(xiàn)列表數(shù)據(jù)的增刪改查,AJAX提交后,js操作數(shù)據(jù)
最近工作中,有一處列表數(shù)據(jù)是頁面初始化加載的,用戶可以進行操作,因為這些數(shù)據(jù)并不存在數(shù)據(jù)庫中,同時為了數(shù)據(jù)的整潔以及高效,所以要在頁面進行增刪改操作(其實查也可以,類似改),之前寫過一個二維數(shù)組保存的,代碼亂而且效率不高,后改用object 感覺還可以,主要是查詢和刪除的時候不需要自己遍歷數(shù)組。
1. html
列表是用div+ul標(biāo)簽弄的,貼一些用到的片段
1.1 要展示的列表
<div class="tab"> <div class="tab-t"> 列表標(biāo)題 </div> <div class="tab-list" id="tab-list"> //列表數(shù)據(jù) </div> <div class="page-f"> <!-- <p class="page-p">共20條</p> <ul class="page-ul"> <li>< </li> <li id="li_1"> 1 </li> <li id="li_2"> 2 </li> <li id="li_3"> 3 </li> <li> > </li> </ul> --> </div> </div> <div class="yzs-tab">
1.2編輯框
<div class="tab"> <div class="tab-t"> 信息確認(rèn) <a class="tbtn modify" id="modify">修改</a> <a class="tbtn submit" id="submit">確認(rèn)</a> </div> <div class="input-f" id="tab-input-f"> <input type="hidden" id="stuid"> <div class="tab-input"> <input type="text" class="info-input disabled" disabled="disabled" placeholder="姓名" /> </div> <div class="tab-input"> <input type="text" class="info-input disabled" disabled="disabled" placeholder="班級" /> </div> <div class="tab-input"> <input type="text" class="info-input disabled" disabled="disabled" placeholder="聯(lián)系電話" /> </div> </div> </div>
貼一個大致實現(xiàn)效果

2. js主要內(nèi)容
先貼代碼 再簡單解釋下
2.1 初始化
<script type="text/javascript">
var data=new Object();//操作的主要 定義成全局
var curPage=1;//翻頁靠他了
$(function() {
$("#search").click(function() {//格式?jīng)]正 其實我很別扭
var tabList = "";//最后要放入的list數(shù)據(jù) 后面拼接li標(biāo)簽
$.ajax({
type: 'post',//get也可以 但是之前是要修改東西
url: '<%=request.getContextPath()%>/home/getlist',
dataType: 'json',
data:{name : name},
success: function (result) {
var jsonArr = jQuery.parseJSON(result);//返回的是字符串,也可以controller返回對象,用不用parse了
var arrSize = jsonArr.length;
var pagetotal = Math.ceil(arrSize/9);//總頁數(shù) 向上取整,一頁展示9條
data = new Object();//每次搜索要重置下data
$.each(jsonArr,function(index,value){給data賦值
var temp = new Object();
temp.id = value.id;
temp.name= value.name;
temp.class= value.class;
temp.telphone = value.telphone;
data[value.id] = temp;
})
var count = 0;//為了后面的break做個條件
for(var i in data){//為什么循環(huán)data而不是 jsonArr,因為jsonArr的前九個和data的前九個有可能是不一樣的,因為Object key為數(shù)字時會自
if(count==9)break;//動根據(jù)key排序。自己可以驗證下 本人已認(rèn)證
tabList += '<div class="tab-li" id="info'+data[i].id+'">'+
'<div class="li-name" οnclick="showStu(' + data[i].id + ')">'+
data[i].name
+'</div>'+
'<div class="li-close" οnclick="removeStu('+data[i].id +')">'+
'<i class="close"></i>'+
'</div>'+
'</div>';
count++;
}
//少于三頁 不顯示上頁下頁
var tips = '<p class="page-p">共'+arrSize+'條</p>';
if(pagetotal<=3){
tips +='<ul class="page-ul">';
for(var i=0; i++; i<pagetotal){
tips += '<li οnclick="turnPage('+i+')">'+i+'</li>';
}
tips += '</ul>';
}else{
tips += '<ul class="page-ul">'+
'<li οnclick="turnPage(1)" class="current"> 1 </li>'+
'<li οnclick="turnPage(2)"> 2 </li>'+
'<li οnclick="turnPage(3)"> 3 </li>'+
'<li οnclick="turnPage(4)"> > </li>'+
'</ul>';
}
$("#tab-list").html(tabList);
$(".page-f").html(tips);
$(".page-f").show();
}
});
}
初始化后就有了列表,上面用到了翻頁函數(shù) turnPage 先實現(xiàn)分頁
function turnPage(page){
curPage = page;
var dataLength = 0;
var count = 0;
for(var o in data){
dataLength++;
}
var pagetotal = Math.ceil(dataLength/9);
if(page>pagetotal){//給刪除用的 ,刪了一頁的話 最大頁碼就減一了
turnPage(page-1);//譬如你在最后一頁(18頁)刪光了 這時候應(yīng)該去第17頁
return;
}
var yzsTabList ="";
for(var o in data){
if(count>=(page-1)*9){
tabList += '<div class="tab-li" id="info'+data[o].id+'">'+
'<div class="li-name" οnclick="showStu(' + data[o].id + ')">'+
data[o].name
+'</div>'+
'<div class="li-close" οnclick="removeStu('+data[o].id +')">'+
'<i class="close"></i>'+
'</div>'+
'</div>';
}
count++;
if(count == page*9){
break;
}
}
//少于三頁 不顯示上頁下頁
var tips = '<p class="page-p">共'+dataLength+'條</p>'+
'<ul class="page-ul">';
if(pagetotal<=3){
tips +='<ul class="page-ul">';
for(var i=0; i++; i<pagetotal){
if(page == i){
tips += '<li οnclick="turnPage('+i+')" class="current">'+i+'</li>';
}else{
tips += '<li οnclick="turnPage('+i+')">'+i+'</li>';
}
}
}
else{
if(page!=1){//前三頁不能有上一頁的標(biāo)簽 最后一頁的時候不能有下一頁的標(biāo)簽
tips += '<li οnclick="turnPage('+(page-1)+')">< </li>'+
'<li οnclick="turnPage('+(page-1)+')">'+(page-1)+'</li>'+
'<li οnclick="turnPage('+page+')" class="current">'+ page +'</li>';
if(page != pagetotal){
tips += '<li οnclick="turnPage('+(page+1)+')">'+(page+1)+'</li>'+
'<li οnclick="turnPage('+(page+1)+')"> > </li>';
}
}else{
for(var i=3; i>0; i--){
if(page == (4-i)){
tips += '<li οnclick="turnPage('+(4-i)+')" class="current">'+(4-i)+'</li>';
}else{
tips += '<li οnclick="turnPage('+(4-i)+')">'+(4-i)+'</li>';
}
}
tips += '<li οnclick="turnPage('+(page+1)+')"> > </li>';
}
}
tips += '</ul>';
$("#tab-list").html(tabList);
$(".page-f").html(tips);
$(".page-f").show();
}
邏輯也不是特別難,接下來做刪除,修改還要涉及另一個div的操作。貼代碼+注釋
function removeStu(id){
if($("#stuid").val()==id){//stuid是我在修改框里加的隱藏id 當(dāng)你查看這個人
$("#tab-input-f").hide();//的時候,要刪掉這個信息 應(yīng)該把修改框隱藏
}
delete data[id];//簡單的一句話 從data里刪除這個數(shù)據(jù),要是數(shù)組還要循環(huán)匹配
$("#info"+id).remove();//頁面刪除 其實也可以刪掉 因為下面要重構(gòu)數(shù)據(jù)
turnPage(curPage);//翻頁 刪除一條 下一條要補上來
}
關(guān)于修改,和后臺springmvc。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript數(shù)據(jù)存儲 Cookie篇
這篇文章主要為大家介紹了JavaScript數(shù)據(jù)存儲 Cookie篇,感興趣的朋友可以參考一下2016-07-07
IE7中javascript操作CheckBox的checked=true不打勾的解決方法
在IE7下,生成的Checkbox無法正確的打上勾。 原因是 chkbox控件還沒初始化(appendChild),就開始操作它的結(jié)果2009-12-12
JavaScript數(shù)據(jù)類型的轉(zhuǎn)換詳解
JavaScript是一種動態(tài)類型語言,變量沒有類型限制,可以隨時賦予任意值。本文就來和大家聊聊JavaScript中的數(shù)據(jù)類型轉(zhuǎn)換,感興趣的小伙伴可以了解一下2022-12-12
html的DOM中document對象images集合用法實例
這篇文章主要介紹了html的DOM中document對象images集合用法,實例分析了images集合的語法與使用技巧,需要的朋友可以參考下2015-01-01

