当前位置:   article > 正文

纯JS table动态增加行_js table 添加行

js table 添加行

JS代码:

  1. //tableId为table的id
  2. function addRow(tableId) {
  3. //找到table
  4. var tab = document.getElementById(tableId);
  5. //获取table现有行
  6. var tabRows = tab.rows;
  7. //在现有行数后面新增一行(tr)
  8. var newTr = tab.insertRow(tabRows.length);
  9. //样式:居中
  10. newTr.align = "center";
  11. //在newTr(tr)中插入td
  12. //(例子定义6列,可根据自身需求更改,除checkbox(删除需选中,若无删除功能,可更改)外无硬性规定)
  13. var newTd0 = newTr.insertCell(0);//checkbox
  14. var newTd1 = newTr.insertCell(1);//序号
  15. var newTd2 = newTr.insertCell(2);//姓名
  16. var newTd3 = newTr.insertCell(3);//性别
  17. var newTd4 = newTr.insertCell(4);//年龄
  18. var newTd5 = newTr.insertCell(5);//地址
  19. //获取table现有行数
  20. var i = tab.rows.length;
  21. //动态id
  22. var names = "name" + (i - 1);//(新增前有x个tr就-x,例:若只有表头一行(一个tr),则:-1)
  23. var sexs = "sex" + (i - 1);//同上
  24. var ages = "age" + (i - 1);//同上
  25. var address_s = "address" + (i - 1);//同上
  26. //样式:居中
  27. newTd0.align = "center";//checkbox
  28. newTd1.align = "center";//序号
  29. newTd2.align = "center";//姓名
  30. newTd3.align = "center";//性别
  31. newTd4.align = "center";//年龄
  32. newTd5.align = "center";//地址
  33. //在对应的td中插入内容
  34. newTd0.innerHTML = '<input type="checkbox" style="width: 16px; height: 28px; border: 1px solid #e6e6e6;" />';
  35. newTd1.innerHTML = i-1; //序号 (新增前有x个tr就-x,例:若只有表头一行(一个tr),则:-1)
  36. newTd2.innerHTML = '<input type="text" name="names" id="' + names + '" maxlength="100" style="width: 95%; height: 28px; border: 1px solid #e6e6e6;"/>';
  37. newTd3.innerHTML = '<select name="sexs" id="' + sexs + '" style="width:95%; height: 28px; border: 1px solid #e6e6e6;"><option value="" selected="selected">请选择</option><option value="0">男</option><option value="1">女</option></select>';
  38. newTd4.innerHTML = '<input type="text" name="ages" id="' + ages + '" maxlength="100" style="width: 95%; height: 28px; border: 1px solid #e6e6e6;"/>';
  39. newTd5.innerHTML = '<input type="text" name="address_s" id="' + address_s + '" maxlength="100" style="width: 95%; height: 28px; border: 1px solid #e6e6e6;"/>';
  40. }
  41. function delRow(tableId) {
  42. var tab=document.getElementById(tableId);
  43. var tabRows=tab.rows;
  44. //0为表头那一行(即:第1行为表头,从第2行开始新增),所以i=2-1,可根据自身实际情况更改(从第x行开始新增需把1改为:x-1)
  45. for(var i=1; i<tabRows.length; i++){
  46. var bx = tabRows[i].cells[0].childNodes[0];
  47. if (bx.checked) {
  48. tab.deleteRow(i);
  49. i = i - 1;
  50. }
  51. }
  52. //删除行后重新排列序号,若不需要可以注释
  53. reTable(tableId);
  54. }
  55. //删除行后重新排列序号(见下图)
  56. function reTable(tableId) {
  57. var tabid = document.getElementById(tableId);
  58. //0为表头那一行(即:第1行为表头,从第2行开始新增),所以i=2-1,可根据自身实际情况更改(从第x行开始新增需把1改为:x-1)
  59. for (var i = 1; i < tabid.rows.length; i++) {
  60. tabid.rows[i].cells[1].innerHTML = i;//若不是从第1行开始动态增加,i需+/-(例:若无表头,从第1行就开始新增(此时var i=0),则为:i+1;从第3行开始增加(此时var i=2),则为i-1;第4行...i-2,以此类推)
  61. }
  62. }
  63. //表格验证
  64. function checkTable(tableId) {
  65. //找到table
  66. var tab = document.getElementById(tableId);
  67. //获取table现有行数
  68. var len = tab.rows.length;
  69. if(len <= 1){//若只有表头一行
  70. alert("至少填写一条数据!");//根据自身需求是否需要
  71. return false;
  72. }
  73. var message = "";//错误信息
  74. //0为表头那一行(即:第1行为表头,从第2行开始新增),所以i=2-1,可根据自身实际情况更改(从第x行开始新增需把1改为:x-1)
  75. for(var i = 1; i < len; i++){
  76. //若用了jQuery可以这么写,这里用纯js,所以不用
  77. //var name = $(tab.rows[i]).find("[name='names']").val();
  78. var name = document.getElementById("name"+i).value;
  79. var sexs = document.getElementById("sex"+i);
  80. var index = sexs.selectedIndex;
  81. var sex = sexs.options[index].value;
  82. var age = document.getElementById("age"+i).value;
  83. var address = document.getElementById("address"+i).value;
  84. //验证是否有值
  85. var msg = '';
  86. if (name == '') {
  87. msg += '姓名、';
  88. }
  89. if (sex == '') {
  90. msg += '性别、';
  91. }
  92. if (age == '') {
  93. msg += '年龄、';
  94. }
  95. if (address == '') {
  96. msg += '地址、';
  97. }
  98. if(msg != ''){
  99. message += '【XXX表】第' + i + '行,' + msg.substring(0, msg.length - 1) + "不能为空!\r\n";
  100. }
  101. }
  102. if(message != ''){
  103. alert(message);
  104. return false;
  105. }
  106. alert("保存成功");
  107. }

CSS:

  1. .header {
  2. line-height: 34px;
  3. background-color: #f2f2f2;
  4. color: #666;
  5. }
  6. .button{
  7. width: 60px;
  8. height: 28px;
  9. background-color: #f2f0f0;
  10. border-radius: 8%;
  11. }

JSP代码:样式根据自己的需求来

  1. <div style="float:right; margin-right : 2%;">
  2. <input type="button" onclick="addRow('test')" value="增加" class="button" />
  3. <input type="button" onclick="delRow('test');" value="删除" class="button" />
  4. <input type="button" onclick="checkTable('test')" value="保存" class="button" />
  5. </div>
  6. <div style="padding-top: 36px;">
  7. <table id="test" border="1" cellspacing="0" style="width: 100%;">
  8. <tr class="header">
  9. <th style="width: 5%;text-align: center;">选项</th>
  10. <th style="width: 5%;text-align: center;">序号</th>
  11. <th style="width: 20%;text-align: center;">姓名</th>
  12. <th style="width: 15%;text-align: center;">性别</th>
  13. <th style="width: 15%;text-align: center;">年龄</th>
  14. <th style="width: 40%;text-align: center;">地址</th>
  15. </tr>
  16. </table>
  17. </div>

效果图:

添加10行

 调用reTable(tableId) 删除第2、4、6、8行效果(仅序号改变,重新排序,第1、3、5、7、9、10行其余数据不变):

 不调用reTable(tableId) 删除第2、4、6、8行效果(序号未重新排序,第1、3、5、7、9、10行其余数据不变):

【保存】校验效果:

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/668875
推荐阅读
相关标签
  

闽ICP备14008679号