JS实现动态生成表格并提交表格数据向后端


Posted in Javascript onNovember 25, 2020

本文实例介绍了JS实现动态生成表格并向后端提交表格数据的相关代码,分享给大家供大家参考,具体内容如下

先来看一下需求:在web页面上动态的生成表格,并可以对表格中的数据进行编辑,然后把表格中的数据提交至后端服务器保存。

那么我们首先需要解决的是动态生成表格的问题

1.首先我们需要导入JS库文件。

<script src="../js/jqui/jquery/jquery-1.5.2.min.js" type="text/javascript"></script>

2.然后在页面div中事先创建一个空白表格,可以根据需求而定,我这里是一个带表头的表格

<table border="0" style="text-align: center;" width="100%" id="myTable">
 <tr>
 <td width="150px;">表头1</td>
 <td width="150px;">表头2</td>
 <td width="150px;">表头3</td>
 <td width="150px;">表头4</td>
 <td width="150px;">表头5</td>
 <td width="150px;">操作</td>
 </tr>
</table>

3.表格创建好后,我们就可以写动态生成表格的关键代码了。我们写一个js方法供触发使用

var num = 0;
 function addTable(){
 var tableHtml ="";
 tableHtml += '<tr id="tr'+num+'">'
   +'<td><input class="addtd" id="cnashu1'+num+'" style="width:150px;" type="text" name="cnashu1" /></td>'
   +'<td><input class="addtd" id="cnashu2'+num+'" style="width:150px;" type="text" name="cnashu2"/></td>'
   +'<td><input class="addtd" id="cnashu3'+num+'" style="width:150px;" type="text" name="cnashu3"/></td>'
   +'<td><input class="addtd" id="cnashu4'+num+'" style="width:150px;" type="text" name="cnashu4"/></td>'
   +'<td><input class="addtd" id="cnashu5'+num+'" style="width:150px;" type="text" name="cnashu5"/></td>'
   +'<td><a style="cursor: pointer; color: blue;" onclick="removeTr('+num+')">删除</a>'
   +'<a id="edit'+num+'" class="edit" style="cursor: pointer; color: blue;" onclick="editDataByOne('+num+')">修改</a>'
   +'<a id="save'+num+'" class="hide" style="cursor: pointer; color: blue;" onclick="saveByOne('+num+')">保存</a>'
   +'</td>'
   +'</tr>';
 
 var elements = $("#myTable").children().length; //表示id为“mtTable”的标签下的子标签的个数
 
 $("#myTable").children().eq(elements - 1).after(tableHtml); //在表头之后添加空白行
 num++; 
 }

我们可以看到在<tb>标签中我们添加了<input>标签,主要是用来提供用户输入参数, 而全局变量num,主要是用来区分每一个添加的参数的id的唯一性而存在的。

4.接下来我们对表格进行操作

//删除行
function removeTr(trNum){
 $("#tr"+trNum).remove();
}
//编辑行
function editDataByOne(trNum){
 $this = $("#tr"+trNum);
 $(".addtd",$this).removeAttr("readonly");
}
//保存行
function saveByOne(trNum){
 $this = $("#tr"+trNum);
 $(".addtd",$this).attr("readonly","readonly");
}

上面我们对表格进行了删除,编辑,保存等操作,具体操作内容可以根据需求调整。(其实后来我发现可以不需要全局num,也可以实现对添加行的操作,至于怎么实现,主要是一些js的操作,有空再研究吧)

至此,我们动态生成表格的页面代码就完结了。
上半篇我们讲到了如何动态生成表格,接下来我们就讲一下如何获取表格中的多条数据,并提交至后台服务器

在开发之前我也在网上找了一些资料,要么太简洁,要么看不懂,但是他们大多数都提到了使用Json的方式将多个参数传入后台,那么我就根据这个思路编写了如下的代码。

1.首先我们来看一下如何获得表格中的数据,还是结合上边的例子

<div>
 <form id="submitForm">
 <table border="0" style="text-align: center;" width="100%" id="myTable">
  <tr>
  <td width="150px;">表头1</td>
  <td width="150px;">表头2</td>
  <td width="120px;">表头3</td>
  <td width="120px;">表头4</td>
  <td width="80px;">表头5</td>
  <td width="100px;">操作</td>
  </tr>
 </table>
 </form>
 <input type="button" value="添加" onclick="addTable();">
 <input type="button" value="提交" onclick="save();">
 </div>

我们可以看到在Table标签的外层我们加了一层form标签,并设置form标签的id。

2.接下来我们根据jQuery的“serialize()”方法获取表格中input标签的参数

var msg = $("#submitForm").serialize(); //获得后的msg的值:canshu1=xxx&canshu2=xxx&canshu3=xxx&canshu4=xxx&canshu5=xxx

3.拿到表格中的数据后,我们根据它值的形式把它转换成json格式的数据

var json = "[{";
var msg2 = msg.split("&"); //先以“&”符号进行分割,得到一个key=value形式的数组
var t = false;
for(var i = 0; i<msg2.length; i++){
 var msg3 = msg2[i].split("="); //再以“=”进行分割,得到key,value形式的数组
 for(var j = 0; j<msg3.length; j++){
 json+="\""+msg3[j]+"\"";
 if(j+1 != msg3.length){
  json+=":";
 }
 if(t){
  json+="}";
  if(i+1 != msg2.length){ //表示是否到了当前行的最后一列
  json+=",{";
  }
  t=false;
 }
 if(msg3[j] == "canshu5"){ //这里的“canshu5”是你的表格的最后一列的input标签的name值,表示是否到了当前行的最后一个input
  t = true;
 }
 }
 if(!msg2[i].match("canshu5")){ //同上
 json+=";";
 }
   
}
json+="]";
//最终msg的值就被转换为:[{"key":"value";"key":"value"},{"key":"value";"key":"value"}]格式的json数据

通过上述代码,我们已经成功的将表格中的多条数据转换成了json格式的数据,那么我们就可以通过ajax的方式将Json数据发送到后台处理。

至此,我们获取表格中的多条数据并提交至服务器的代码就编写完了,希望对大家的学习有所帮助。

Javascript 相关文章推荐
jQuery之end()和pushStack()使用介绍
Feb 07 Javascript
解析Jquery取得iframe中元素的几种方法
Jul 04 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
Nov 05 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
Jan 26 Javascript
三个js循环的关键字示例(for与while)
Feb 16 Javascript
原生js实现自由拖拽弹窗代码demo
Jun 29 Javascript
js实现千分符和保留几位小数的简单实例
Aug 01 Javascript
关于 angularJS的一些用法
Nov 29 Javascript
bootstrap动态调用select下拉框的实例代码
Aug 09 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
Dec 11 Javascript
Async/Await替代Promise的6个理由
Jun 15 Javascript
layer的prompt弹出框,点击回车,触发确定事件的方法
Sep 06 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
Jan 27 #Javascript
jQuery实现的分子运动小球碰撞效果
Jan 27 #Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
Jan 27 #Javascript
不用一句js代码初始化组件
Jan 27 #Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
Jan 27 #Javascript
封装属于自己的JS组件
Jan 27 #Javascript
js+css绘制颜色动态变化的圈中圈效果
Jan 27 #Javascript
You might like
PHP+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
探讨:web上存漏洞及原理分析、防范方法
2013/06/29 PHP
PHP如何利用P3P实现跨域
2013/08/24 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
详解Yii2.0使用AR联表查询实例
2017/06/16 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
详解Laravel5.6 Passport实现Api接口认证
2018/07/27 PHP
PHP rmdir()函数的用法总结
2019/07/02 PHP
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
在bootstrap中实现轮播图实例代码
2017/06/11 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
layui表格分页 记录勾选的实例
2019/09/02 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中字符串对齐方法介绍
2015/05/21 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
有关Python的22个编程技巧
2018/08/29 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
业绩考核岗位职责
2014/02/01 职场文书
境外导游求职信
2014/02/27 职场文书
党课知识竞赛主持词
2014/04/01 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
ktv好的活动方案
2014/08/15 职场文书
关于读书的演讲稿800字
2014/08/27 职场文书
车辆年审委托书范本
2014/09/18 职场文书