js實(shí)現(xiàn)提交前對(duì)列表數(shù)據(jù)的增刪改查
js實(shí)現(xiàn)列表數(shù)據(jù)的增刪改查,AJAX提交后,js操作數(shù)據(jù)
最近工作中,有一處列表數(shù)據(jù)是頁(yè)面初始化加載的,用戶可以進(jìn)行操作,因?yàn)檫@些數(shù)據(jù)并不存在數(shù)據(jù)庫(kù)中,同時(shí)為了數(shù)據(jù)的整潔以及高效,所以要在頁(yè)面進(jìn)行增刪改操作(其實(shí)查也可以,類似改),之前寫過一個(gè)二維數(shù)組保存的,代碼亂而且效率不高,后改用object 感覺還可以,主要是查詢和刪除的時(shí)候不需要自己遍歷數(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="班級(jí)" /> </div> <div class="tab-input"> <input type="text" class="info-input disabled" disabled="disabled" placeholder="聯(lián)系電話" /> </div> </div> </div>
貼一個(gè)大致實(shí)現(xiàn)效果
2. js主要內(nèi)容
先貼代碼 再簡(jiǎn)單解釋下
2.1 初始化
<script type="text/javascript"> var data=new Object();//操作的主要 定義成全局 var curPage=1;//翻頁(yè)靠他了 $(function() { $("#search").click(function() {//格式?jīng)]正 其實(shí)我很別扭 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返回對(duì)象,用不用parse了 var arrSize = jsonArr.length; var pagetotal = Math.ceil(arrSize/9);//總頁(yè)數(shù) 向上取整,一頁(yè)展示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做個(gè)條件 for(var i in data){//為什么循環(huán)data而不是 jsonArr,因?yàn)閖sonArr的前九個(gè)和data的前九個(gè)有可能是不一樣的,因?yàn)镺bject key為數(shù)字時(shí)會(huì)自 if(count==9)break;//動(dòng)根據(jù)key排序。自己可以驗(yàn)證下 本人已認(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++; } //少于三頁(yè) 不顯示上頁(yè)下頁(yè) 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(); } }); }
初始化后就有了列表,上面用到了翻頁(yè)函數(shù) turnPage 先實(shí)現(xiàn)分頁(yè)
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){//給刪除用的 ,刪了一頁(yè)的話 最大頁(yè)碼就減一了 turnPage(page-1);//譬如你在最后一頁(yè)(18頁(yè))刪光了 這時(shí)候應(yīng)該去第17頁(yè) 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; } } //少于三頁(yè) 不顯示上頁(yè)下頁(yè) 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){//前三頁(yè)不能有上一頁(yè)的標(biāo)簽 最后一頁(yè)的時(shí)候不能有下一頁(yè)的標(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(); }
邏輯也不是特別難,接下來做刪除,修改還要涉及另一個(gè)div的操作。貼代碼+注釋
function removeStu(id){ if($("#stuid").val()==id){//stuid是我在修改框里加的隱藏id 當(dāng)你查看這個(gè)人 $("#tab-input-f").hide();//的時(shí)候,要?jiǎng)h掉這個(gè)信息 應(yīng)該把修改框隱藏 } delete data[id];//簡(jiǎn)單的一句話 從data里刪除這個(gè)數(shù)據(jù),要是數(shù)組還要循環(huán)匹配 $("#info"+id).remove();//頁(yè)面刪除 其實(shí)也可以刪掉 因?yàn)橄旅嬉貥?gòu)數(shù)據(jù) turnPage(curPage);//翻頁(yè) 刪除一條 下一條要補(bǔ)上來 }
關(guān)于修改,和后臺(tái)springmvc。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Django 后臺(tái)帶有字典的列表數(shù)據(jù)與頁(yè)面js交互實(shí)例
- js、jquery實(shí)現(xiàn)列表模糊搜索功能過程解析
- js實(shí)現(xiàn)列表向上無限滾動(dòng)
- JS檢索下拉列表框中被選項(xiàng)目的索引號(hào)(selectedIndex)
- Vue.js 無限滾動(dòng)列表性能優(yōu)化方案
- vue.js基于v-for實(shí)現(xiàn)批量渲染 Json數(shù)組對(duì)象列表數(shù)據(jù)示例
- 原生JS實(shí)現(xiàn)列表內(nèi)容自動(dòng)向上滾動(dòng)效果
- 基于JavaScript實(shí)現(xiàn)控制下拉列表
相關(guān)文章
JS判斷form內(nèi)所有表單是否為空的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)硪黄狫S判斷form內(nèi)所有表單是否為空的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09JavaScript數(shù)據(jù)存儲(chǔ) Cookie篇
這篇文章主要為大家介紹了JavaScript數(shù)據(jù)存儲(chǔ) Cookie篇,感興趣的朋友可以參考一下2016-07-07利用Console來Debug的10個(gè)高級(jí)技巧匯總
通常,我們?cè)诰帉懸粋€(gè)新的JavaScript代碼過程中經(jīng)常會(huì)發(fā)生錯(cuò)誤,可能是語(yǔ)法錯(cuò)誤,可能是邏輯錯(cuò)誤,如果沒有一個(gè)調(diào)試工具幫助我們的話,相信你怕是頭都要炸了。下面這篇文章主要給大家總結(jié)介紹了關(guān)于利用Console來Debug的10個(gè)高級(jí)技巧,需要的朋友可以參考下。2018-03-03IE7中javascript操作CheckBox的checked=true不打勾的解決方法
在IE7下,生成的Checkbox無法正確的打上勾。 原因是 chkbox控件還沒初始化(appendChild),就開始操作它的結(jié)果2009-12-12JavaScript數(shù)據(jù)類型的轉(zhuǎn)換詳解
JavaScript是一種動(dòng)態(tài)類型語(yǔ)言,變量沒有類型限制,可以隨時(shí)賦予任意值。本文就來和大家聊聊JavaScript中的數(shù)據(jù)類型轉(zhuǎn)換,感興趣的小伙伴可以了解一下2022-12-12js原生實(shí)現(xiàn)FastClick事件的實(shí)例
下面小編就為大家?guī)硪黄猨s原生實(shí)現(xiàn)FastClick事件的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11簡(jiǎn)潔短小的 JavaScript IE 瀏覽器判定代碼
IE瀏覽器不管是什么版本,總是跟Web標(biāo)準(zhǔn)有些不太兼容。對(duì)于代碼工作者來說,自然是苦不堪言,為了考慮IE的兼容問題,不管是寫 CSS 還是 JS,往往都要對(duì) IE 特別對(duì)待,這就少不了做些判斷。本文不討論如何區(qū)分 IE 的樣式,僅是 JS 判定 IE 瀏覽器。2010-03-03html的DOM中document對(duì)象images集合用法實(shí)例
這篇文章主要介紹了html的DOM中document對(duì)象images集合用法,實(shí)例分析了images集合的語(yǔ)法與使用技巧,需要的朋友可以參考下2015-01-01