js实现提交前对列表数据的增删改查


Posted in Javascript onJanuary 16, 2020

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>

贴一个大致实现效果

js实现提交前对列表数据的增删改查

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。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 图片 上一张 下一张 链接效果(续篇)
Apr 20 Javascript
ExtJS 下拉多选框lovcombo
May 19 Javascript
JavaScript设置获取和设置属性的方法
Mar 04 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
Dec 23 Javascript
Bootstrap开发实战之响应式轮播图
Jun 02 Javascript
js canvas仿支付宝芝麻信用分仪表盘
Nov 16 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
Dec 08 Javascript
基于react框架使用的一些细节要点的思考
May 31 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
Jul 27 Javascript
关于微信公众号开发无法支付的问题解决
Dec 28 Javascript
JS错误处理与调试操作实例分析
Apr 13 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
Sep 04 Javascript
react实现移动端下拉菜单的示例代码
Jan 16 #Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
Jan 16 #Javascript
JS实现简单的表格增删
Jan 16 #Javascript
JS实现基本的网页计算器功能示例
Jan 16 #Javascript
JS数组进阶示例【数组的几种函数用法】
Jan 16 #Javascript
js实现简单的秒表
Jan 16 #Javascript
JS 数组基本用法入门示例解析
Jan 16 #Javascript
You might like
一个不易被发现的PHP后门代码解析
2014/07/05 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
PHP中list方法用法示例
2016/12/01 PHP
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
基于angularJS的表单验证指令介绍
2016/10/21 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
从源码角度来回答keep-alive组件的缓存原理
2021/01/18 Javascript
[03:11]TI9战队档案 - Alliance
2019/08/20 DOTA
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
关于numpy中np.nonzero()函数用法的详解
2017/02/07 Python
深入浅出学习python装饰器
2017/09/29 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
详谈python中冒号与逗号的区别
2018/04/18 Python
实用自动化运维Python脚本分享
2018/06/04 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
墨西哥运动服饰和鞋网上商店:Netshoes墨西哥
2016/07/28 全球购物
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
个性与发展自我评价
2014/02/11 职场文书
物资采购方案
2014/06/12 职场文书
司法工作人员群众路线对照检查材料思想汇报
2014/09/30 职场文书
乡镇干部个人对照检查材料思想汇报
2014/10/04 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
高一化学教学反思
2016/02/22 职场文书
Django实现drf搜索过滤和排序过滤
2021/06/21 Python
SQL中的三种去重方法小结
2021/11/01 SQL Server