js实现列表数据的增删改查,AJAX提交后,js操作数据
最近工作中,有一处列表数据是页面初始化加载的,用户可以进行操作,因为这些数据并不存在数据库中,同时为了数据的整洁以及高效,所以要在页面进行增删改操作(其实查也可以,类似改),之前写过一个二维数组保存的,代码乱而且效率不高,后改用object 感觉还可以,主要是查询和删除的时候不需要自己遍历数组。
1. html
列表是用div+ul标签弄的,贴一些用到的片段
1.1 要展示的列表
<div class="tab"> <div class="tab-t"> 列表标题 </div> <div class="tab-list" id="tab-list"> //列表数据 </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"> 信息确认 <a class="tbtn modify" id="modify">修改</a> <a class="tbtn submit" id="submit">确认</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="联系电话" /> </div> </div> </div>
贴一个大致实现效果
2. js主要内容
先贴代码 再简单解释下
2.1 初始化
<script type="text/javascript"> var data=new Object();//操作的主要 定义成全局 var curPage=1;//翻页靠他了 $(function() { $("#search").click(function() {//格式没正 其实我很别扭 var tabList = "";//最后要放入的list数据 后面拼接li标签 $.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);//总页数 向上取整,一页展示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){//为什么循环data而不是 jsonArr,因为jsonArr的前九个和data的前九个有可能是不一样的,因为Object key为数字时会自 if(count==9)break;//动根据key排序。自己可以验证下 本人已认证 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(); } }); }
初始化后就有了列表,上面用到了翻页函数 turnPage 先实现分页
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页)删光了 这时候应该去第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){//前三页不能有上一页的标签 最后一页的时候不能有下一页的标签 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 当你查看这个人 $("#tab-input-f").hide();//的时候,要删掉这个信息 应该把修改框隐藏 } delete data[id];//简单的一句话 从data里删除这个数据,要是数组还要循环匹配 $("#info"+id).remove();//页面删除 其实也可以删掉 因为下面要重构数据 turnPage(curPage);//翻页 删除一条 下一条要补上来 }
关于修改,和后台springmvc。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]