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 相关文章推荐
Javascript打印网页部分内容的脚本
Nov 17 Javascript
JQuery的Validation插件中Remote验证的中文问题
Jul 26 Javascript
JQuery实现用户名无刷新验证的小例子
Mar 22 Javascript
JS定义回车事件(实现代码)
Jul 08 Javascript
简单的js图片轮换代码(js图片轮播)
May 06 Javascript
JavaScript中string转换成number介绍
Dec 31 Javascript
javascript文件加载管理简单实现方法
Jul 25 Javascript
详解原生js实现offset方法
Jun 15 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
Dec 10 Javascript
微信小程序module.exports模块化操作实例浅析
Dec 20 Javascript
详解django模板与vue.js冲突问题
Jul 07 Javascript
在vue+element ui框架里实现lodash的debounce防抖
Nov 13 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类
2006/11/27 PHP
PHP 类商品秒杀计时实现代码
2010/05/05 PHP
php中实现简单的ACL 完结篇
2011/09/07 PHP
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
微信小程序实现星级评价效果
2018/12/28 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
vue组件实现移动端九宫格转盘抽奖
2020/10/16 Javascript
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
2020/12/28 Javascript
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
详解在Python中处理异常的教程
2015/05/24 Python
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
Python程序打包工具py2exe和PyInstaller详解
2019/06/28 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
python 基于wx实现音乐播放
2020/11/24 Python
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
DNA测试:Orig3n
2019/03/01 全球购物
Android interview questions
2016/12/25 面试题
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
优秀的教师个人的中文求职信
2013/09/21 职场文书
开展批评与自我批评发言材料
2014/05/15 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
2014年助理工程师工作总结
2014/11/14 职场文书
初中开学典礼新闻稿
2015/07/17 职场文书
2019年七夕情人节浪漫祝福语大全!
2019/08/08 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python