JS实现点击按钮表新增一行
js如何实现动态在表格中添加标题和去掉标题?
![js如何实现动态在表格中添加标题和去掉标题?](https://img.taocdn.com/s3/m/dff4deffafaad1f34693daef5ef7ba0d4a736d69.png)
js如何实现动态在表格中添加标题和去掉标题?js如何实现动态在表格中添加标题和去掉标题?⼀、总结1、通过table标签的createCaption(),deleteCaption()⽅法实现。
document.getElementById('tab').deleteCaption()var cap=document.getElementById('tab').createCaption();⼆、js如何实现动态在表格中添加标题和去掉标题?1、插⼊删除表格标题案例实例描述:动态的插⼊删除⾏以及表格标题等案例要点:掌握table对象的insertRow(),deleteRow(),createCaption(),deleteCaption()等⽅法。
2、⽤到的table的⽅法和属性> Table 对象⽅法createCaption() 为表格创建⼀个 caption 元素。
createTFoot() 在表格中创建⼀个空的 tFoot 元素。
createTHead() 在表格中创建⼀个空的 tHead 元素。
deleteCaption() 从表格删除 caption 元素以及其内容。
deleteRow() 从表格删除⼀⾏。
deleteTFoot() 从表格删除 tFoot 元素及其内容。
deleteTHead() 从表格删除 tHead 元素及其内容。
insertRow() 在表格中插⼊⼀个新⾏。
三、代码1<!DOCTYPE html>2<html lang="en">3<head>4<meta charset="UTF-8">5<title>表格专题</title>6</head>7<body>8<table id="tab" border="1">9<caption>表格名称</caption>10<thead>11<tr>12<th colspan="3">标题1</th>13</tr>14</thead>15<tbody>16<tr>17<td>单元格11</td>18<td>单元格12</td>19<td>单元格13</td>20</tr>21<tr>22<td>单元格21</td>23<td>单元格22</td>24<td>单元格23</td>25</tr>26<tr>27<td>单元格31</td>28<td>单元格32</td>29<td>单元格33</td>30</tr>31</tbody>32<tfoot><td>备注:</td><td colspan="2"></td></tfoot>33</table>34<p><input type="button" value="增加⾏" onclick="addtr()">35<input type="button" value="删除⾏" onclick="deltr()"></p>36<p><input type="button" value="删除标题" onclick="delCap()">37<input type="button" value="添加标题" onclick="creCap()"></p>38<script type="text/javascript">39/*40 var tab=document.getElementById('tab') //获取表格元素41 var rows=tab.rows; //返回包含表格中所有⾏的⼀个数组。
JS在可编辑的div中的光标位置插入内容的方法
![JS在可编辑的div中的光标位置插入内容的方法](https://img.taocdn.com/s3/m/b121f61317fc700abb68a98271fe910ef12dae7c.png)
JS在可编辑的div中的光标位置插⼊内容的⽅法本⽂实例讲述了js实现在可编辑div中指定位置插⼊内容的⽅法,就像我们使⽤的编辑器⼀样,分享给⼤家供⼤家参考。
具体实现⽅法如下:⾸先要让DIV启⽤编辑模式复制代码代码如下:<div contenteditable=true id="divTest"></div>通过设定contenteditable=true开启div的编辑模式.这样DIV就可以跟⽂本框⼀样输⼊内容了。
不扯话题了。
下⾯说怎么获取或设置光标位置.2个步骤:①获取DIV中的光标位置②改变光标位置复制代码代码如下:var cursor = 0; // 光标位置document.onselectionchange = function () {var range = document.selection.createRange();var srcele = range.parentElement();//获取到当前元素var copy = document.body.createTextRange();copy.moveToElementText(srcele);for (cursor = 0; pareEndPoints("StartToStart", range) < 0; cursor++) {copy.moveStart("character", 1);//改变光标位置,实际上我们是在记录cursor的数量.}}给document绑定光标变化事件。
⽤来记录光标位置.这样就可以拿到DIV的光标位置了.复制代码代码如下:function moveEnd(obj) {lyTXT1.focus();var r = document.selection.createRange();//因为这⾥死从当前光标开始移动的(好像⽂本框的是从0算起.)所以我们需要拿到当前光标位置,然后就可以计算出要移动多少位了,这样就可以把光标移动到想要的位置了r.moveStart('character', lyTXT1.innerText.length - cursor);r.collapse(true);r.select();}通过上⾯的我们就可以将DIV中的光标移动到最后⾯了⼀个完整的实例复制代码代码如下:<button type="button" onclick="document.getElementById('test').focus(); insertHtmlAtCaret('<b>INSERTED</b>');">插⼊字符</button><div contentEditable="true" style="height:50px; border:2px solid red;" id="test"> </div>function insertHtmlAtCaret(html) {var sel, range;if (window.getSelection) {// IE9 and non-IEsel = window.getSelection();if (sel.getRangeAt && sel.rangeCount) {range = sel.getRangeAt(0);range.deleteContents();// Range.createContextualFragment() would be useful here but is// non-standard and not supported in all browsers (IE9, for one)var el = document.createElement("div");el.innerHTML = html;var frag = document.createDocumentFragment(), node, lastNode;while ( (node = el.firstChild) ) {lastNode = frag.appendChild(node);}range.insertNode(frag);// Preserve the selectionif (lastNode) {range = range.cloneRange();range.setStartAfter(lastNode);range.collapse(true);sel.removeAllRanges();sel.addRange(range);}}} else if (document.selection && document.selection.type != "Control") {// IE < 9document.selection.createRange().pasteHTML(html);}}再看⼀个基于jquery的实例复制代码代码如下:<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"><script type="text/javascript" src="/ajax/libs/jquery/1.4.2/jquery.min.js"></script><title>contenteditable</title><style>*{margin:0;padding:0;}.im-message-area{width:98%;padding:2px;height:75px;border:#000 solid 1px;background:#fff;font:12px/20px arial,"5b8b4f53";word-wrap:break-word;overflow-y:auto;line-height:1;}.ul{display:none;}.ul li{background-color:#CCC;width:50px;}</style><script language="javascript" type="text/javascript">function inimage(text){var obj= $(".im-message-area")[0];var range, node;if(!obj.hasfocus) {obj.focus();}if (window.getSelection && window.getSelection().getRangeAt) {range = window.getSelection().getRangeAt(0);range.collapse(false);node = range.createContextualFragment(text);var c = stChild;range.insertNode(node);if(c){range.setEndAfter(c);range.setStartAfter(c)}var j = window.getSelection();j.removeAllRanges();j.addRange(range);} else if (document.selection && document.selection.createRange) {document.selection.createRange().pasteHTML(text);}}$(document).ready(function(){$('#button').click(function(){$('.ul').show();})$('.ul li').each(function(){$(this).click(function(){inimage($(this).text());})})});</script></head><body><div contenteditable="true" id="im_message_area" class="im-message-area"><br></div> <a href="javascript:void(0)" id="button">按钮</a><ul class="ul"><li>(笑)</li><li>(哭)</li><li>(乐)</li></ul></body></html>希望本⽂所述对⼤家的javascript程序设计有所帮助。
java jsp页面中实现点击按钮动态添加表格
![java jsp页面中实现点击按钮动态添加表格](https://img.taocdn.com/s3/m/3b927b7431b765ce05081495.png)
------如图显示页面:要求:点击“添加明细”按钮,页面中自动生成如下图显示的动态行和列实现上述功能的实例代码:【body里的table代码】.<table width="100%"border="0"cellspacing="1"id="tt"bgcolor="#ffffff"> .<tr class="firstpage1">.<td colspan="16"align="left">.</tr>.<tr class="firstpage">.<td height="23"width="5%">序号</td>.<td width="5%">交通工具</td>.<td width="5%">出发地点</td>.<td width="5%">抵达地点</td>.<td width="5%">.<a href="javascript:void(0)"onclick="addNew()">添加明细</a> .</td>.</tr>.</table>实现上述功能的实例代码:【body里的js代码】.<script type="text/javascript">.<!--.var i=0;.var arr=new Array('#cc99ff','#cc99ff');.alert(arr);.var count =1;.function addNew().{..var order_id =2014;.i++;.tr=document.all.tt.insertRow();.tr.style.backgroundColor=arr[i%2];.tr.insertCell().innerHTML='<div align=center>'+order_id+'</div>';.tr.insertCell().innerHTML='<div align=center>'+order_id+'</div>';.tr.insertCell().innerHTML='<div align=center><input style=\"width:80px;height:20px;border:none\" class=inputstyle type=text maxlength=20 size=8 name=START_SITUS class=border_index></div>';.tr.insertCell().innerHTML='<div align=center><input style=\"width:80px;height:20px;border:none\" class=inputstyle type=text maxlength=20 size=8 name=ARRIVE_SITUS class=border_index></div>';.tr.insertCell().innerHTML="<a href=javascript:void(0) class=\"shenpi2\"onclick=del('"+"tt"+count+"')>删除</a>";.count++;.}..//删除明细行....function del(aa){.document.all.tt.deleteRow(window.event.srcElement.parentElement.parentElement.rowIn dex);..}.//-->.</script>。
js追加行方法
![js追加行方法](https://img.taocdn.com/s3/m/95a661042f3f5727a5e9856a561252d380eb2089.png)
js追加行方法在JavaScript中,可以使用不同的方法来追加行。
以下是其中的一些方法:1. `appendChild()` 方法:该方法用于向指定元素的子节点列表末尾添加一个新的子节点。
```javascriptvar newLine = ("p"); // 创建一个新的段落元素= "这是新的一行。
"; // 设置新段落的文本内容(newLine); // 将新段落添加到文档的body元素末尾```2. `insertBefore()` 方法:该方法用于在指定元素之前插入一个新的子节点。
```javascriptvar newLine = ("p"); // 创建一个新的段落元素= "这是新的一行。
"; // 设置新段落的文本内容var firstLine = ; // 获取body元素的首个子节点(newLine, firstLine); // 在第一个子节点之前插入新段落```3. `insertAdjacentHTML()` 方法:该方法用于在指定位置插入HTML代码。
```javascriptvar newLine = ("p"); // 创建一个新的段落元素= "这是新的一行。
"; // 设置新段落的文本内容("beforeend", "这是一行额外的文本。
"); // 在新段落末尾追加额外的文本(newLine); // 将新段落添加到文档的body元素末尾```这些方法可以根据需要进行组合和修改,以满足特定的需求。
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
![JS实现的表格操作类详解(添加,删除,排序,上移,下移)](https://img.taocdn.com/s3/m/ba87690dfd4ffe4733687e21af45b307e871f9ae.png)
JS实现的表格操作类详解(添加,删除,排序,上移,下移)本⽂实例讲述了JS实现的表格操作类。
分享给⼤家供⼤家参考,具体如下:运⾏效果截图如下:点击此处查看。
具体代码如下:<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><style type="text/css">*{font-size:14px}button{margin:3px}</style><script type="text/javascript">var mytable=null,mytable2=null;window.onload=function(){mytable=new CTable("tbl",10);mytable2=new CTable("tbl2",6);}Array.prototype.each=function(f){for(var i=0;i<this.length;i++) f(this[i],i,this)}function $A(arrayLike){for(var i=0,ret=[];i<arrayLike.length;i++) ret.push(arrayLike[i]);return ret}Function.prototype.bind = function() {var __method = this, args = $A(arguments), object = args.shift();return function() {return __method.apply(object, args.concat($A(arguments)));}}function CTable(id,rows){this.tbl=typeof(id)=="string"?document.getElementById(id):id;if (rows && /^\d+$/.test(rows)) this.addrows(rows)}CTable.prototype={addrows:function(n){ //随机添加n个trnew Array(n).each(this.add.bind(this))},add:function(){ //添加1个trvar self=this;var tr = self.tbl.insertRow(-1),td1= tr.insertCell(-1),td2= tr.insertCell(-1),td3= tr.insertCell(-1);var chkbox=document.createElement("INPUT")chkbox.type="checkbox"chkbox.onclick=self.highlight.bind(self)td1.appendChild(chkbox)td1.setAttribute("width","35")td2.innerHTML=Math.ceil(Math.random()*99)td3.innerHTML=Math.ceil(Math.random()*99)},del:function(){ //删除所选trvar self=this$A(self.tbl.rows).each(function(tr){if (self.getChkBox(tr).checked) tr.parentNode.removeChild(tr)})},up:function(){ //上移所选trvar self=thisvar upOne=function(tr){ //上移1个trif (tr.rowIndex>0){self.swapTr(tr,self.tbl.rows[tr.rowIndex-1])self.getChkBox(tr).checked=true}}var arr=$A(self.tbl.rows).reverse()if (arr.length>0 && self.getChkBox(arr[arr.length-1]).checked){for(var i=arr.length-1;i>=0;i--){if (self.getChkBox(arr[i]).checked){arr.pop()}else{break}}arr.reverse().each(function(tr){if (self.getChkBox(tr).checked) upOne(tr)});},down:function(){var self=thisvar downOne=function(tr){if (tr.rowIndex<self.tbl.rows.length-1) {self.swapTr(tr,self.tbl.rows[tr.rowIndex+1]);self.getChkBox(tr).checked=true;}}var arr=$A(self.tbl.rows)if (arr.length>0 && self.getChkBox(arr[arr.length-1]).checked){for(var i=arr.length-1;i>=0;i--){if (self.getChkBox(arr[i]).checked){arr.pop()}else{break}}}arr.reverse().each(function(tr){if (self.getChkBox(tr).checked) downOne(tr)});},sort:function(){ //排序var self=this,order=arguments[0];var sortBy=function(a,b){if (typeof(order)=="number"){ //数字,则按数字指⽰的列排序return Number(a.cells[order].innerHTML)>=Number(b.cells[order].innerHTML)?1:-1; //转化为数字类型⽐较⼤⼩}else if (typeof(order)=="function"){ //为程序,按程序的返回结果排序return order(a,b);}else{return 1;}}$A(self.tbl.rows).sort(sortBy).each(function(x){var checkStatus=self.getChkBox(x).checked;self.tbl.firstChild.appendChild(x);if (checkStatus) self.getChkBox(x).checked=checkStatus;});},rnd:function(){ //随即选择⼏⾏trvar self=this,selmax=0,tbl=self.tbl;if (tbl.rows.length){selmax=Math.max(Math.ceil(tbl.rows.length/4),1); //选择的⾏数不超过tr数的1/4$A(tbl.rows).each(function(x){self.getChkBox(x).checked=false;self.restoreBgColor(x)})}else{return alert("⽆数据可以选")}new Array(selmax).each(function(){var tr=tbl.rows[Math.floor(Math.random()*tbl.rows.length)]self.getChkBox(tr).checked=true;self.highlight({target:self.getChkBox(tr)})})},highlight:function(){ //设置tr的背景⾊var self=this;var evt=arguments[0] || window.eventvar chkbox=evt.srcElement || evt.targetvar tr=chkbox.parentNode.parentNodechkbox.checked?self.setBgColor(tr):self.restoreBgColor(tr)},swapTr:function(tr1,tr2){ //交换tr1和tr2的位置var target=(tr1.rowIndex<tr2.rowIndex)?tr2.nextSibling:tr2;var tBody=tr1.parentNodetBody.replaceChild(tr2,tr1);tBody.insertBefore(tr1,target);},getChkBox:function(tr){ //从tr得到 checkbox对象return tr.cells[0].firstChild},restoreBgColor:function(tr){tr.style.backgroundColor="#ffffff"setBgColor:function(tr){tr.style.backgroundColor="#c0c0c0"}}function f(a,b){var sumRow=function(row){return Number(row.cells[1].innerHTML)+Number(row.cells[2].innerHTML)}; return sumRow(a)>sumRow(b)?1:-1;}</script></head><body><button onClick="javascript:mytable.rnd()">随机选择⾏</button><button onClick="javascript:mytable.add()">添加⼀⾏</button><button onClick="javascript:mytable.del()">删除选定⾏</button><button onClick="javascript:mytable.up()">上移选定⾏</button><button onClick="javascript:mytable.down()">下移选定⾏</button><button onClick="javascript:mytable.sort(1)">按第⼀列数字排序</button><button onClick="javascript:mytable.sort(f)">按每⾏数据的和排序</button><table width=100%><tr><td valign="top"><table border id="tbl" width="80%"></table></td><td valign="top"><table border id="tbl2" width="80%"></table></td></tr></table><button onClick="javascript:mytable2.rnd()">随机选择⾏</button><button onClick="javascript:mytable2.add()">添加⼀⾏</button><button onClick="javascript:mytable2.del()">删除选定⾏</button><button onClick="javascript:mytable2.up()">上移选定⾏</button><button onClick="javascript:mytable2.down()">下移选定⾏</button><button onClick="javascript:mytable2.sort(2)">按第⼆列数字排序</button><button onClick="javascript:mytable2.sort(f)">按每⾏数据的和排序</button></body></html>希望本⽂所述对⼤家JavaScript程序设计有所帮助。
利用JQuery获取事件源点击表格内加减号实现添加删除一行输入框
![利用JQuery获取事件源点击表格内加减号实现添加删除一行输入框](https://img.taocdn.com/s3/m/61eecd79a55177232f60ddccda38376baf1fe087.png)
利⽤JQuery获取事件源点击表格内加减号实现添加删除⼀⾏输⼊框⾃⼰是⼩⽩,最近做项⽬要实现加减号⽣成表格,就硬写了js实现该功能,前提是引⼊JQuery,bootstrap;如下1<link rel="stylesheet" href="bootstrap.min.css">2<script src="bootstrap.min.js"></script>3<script src="jquery.min.js"></script>在给+-号设置点样式:1 .addInputReturn{2 background:#2ac476 ;3 border-radius: 30%;4 color: white;5 font-size: large;6 }7 .addInputReturn:hover,.delInput:hover{8 color: white;9 }10 .delInput{11 background-color: #f50;12 border-radius: 30%;13 color: white;14 font-size: large;15 }html 页⾯代码如下,td要记得加class类名是通过类名获取的:1<table class="table table-striped table-bordered table-hover" id="sample-table">2<thead>3<tr>4<th></th>5<th>配件编号</th>6<th>配件名称</th>7<th>配件数量</th>8<th>配件总价</th>9<th>已领取数量</th>10<th>状态</th>11</tr>12</thead>13<tbody>14<tr>15<td><a href="javascript:;" class="addInputReturn">16<span class="glyphicon">⼗</span>17</a></td>18<td class="td"><input type="text"></td>19<td class="td"><input type="text"></td>20<td class="td"><input type="text"></td>21<td class="td"><input type="text"></td>22<td class="td"><input type="text"></td>23<td class="td"><input type="text"></td>24</tr>2526</tbody>27</table>页⾯效果图:要实现的点击加号⽣成⼀⾏相同的格式如下图:以下是JQuery代码;通过点击事件,获取事件源,遍历⽣成新的表格:1/*********** 加减⽣成表格 ******************** */2 $('document').ready(function () {3//先获取table,点击class = addInputReturn的按钮,执⾏后⾯的函数4 $("#sample-table").on('click', '.addInputReturn', function () {5/*var td=$("table").children("tbody").html();*/67//添加减号8/*var th = $("table").children("thead").children("tr").children("th").length-1;*/9var del = "";10 del += '<a href="javascript:;" class="delInput" >';11 del += '<span class="glyphicon">⼀</span>';12 del += '</a>';13 $(this).parent().append(del);14//去除加号15this.remove();1617var html = "";18 html +='<tr><td>' +19 '<a href="javascript:;" class="addInputReturn" >' +20 '<span class="glyphicon" >⼗</span>' +21 '</a>' +22 '</td>';2324var td = $('tbody tr:first-child .td').each(function () {25 html +='<td class="td">';26 html += $(this).html();27 html +='</td>';2829 });30// var td = $(".td")[0];31// console.log(td);32333435/*html += '<tr><td><a href="javascript:;" class="addInputReturn" >';36 html += '<span class="glyphicon">⼗</span> </a></td>';37 var tabletext='<td><input type="text"></td>';38 for (var i=0;i<th;i++){39 html+=tabletext;40 }41 html += '</tr>';*/424344// html += td;45// html +='</td>';46 html +='</tr>';47 $("#sample-table").append(html);48 });49/********表格⽣成结束*******/505152 $("body").on('click', '.delInput', function () {53//获取当前点击的元素的⽗级的⽗级进⾏删除54 $(this).parent().parent().remove();55 });56 });这样就好了,很好理解但是中间出了不少问题记录⼀下。
HtmlTable表格编辑(添加删除行,单元格)
![HtmlTable表格编辑(添加删除行,单元格)](https://img.taocdn.com/s3/m/5dcea75d3d1ec5da50e2524de518964bcf84d281.png)
HtmlTable表格编辑(添加删除⾏,单元格)项⽬中⼀个新的需求,需要⽤js来编辑⼀个表格,包括添加⼀⾏,删除⼀⾏,添加⼀个单元格,删除⼀个单元格注:⽰例代码不包括删除列和添加列下⾯是js1 <script>2 function addover(div) {3 $(div).html("+");4 }5 function addout(div) {6 $(div).html(" ");7 }8 function cutover(div) {9 $(div).html("-");10 }11 function cutout(div) {12 $(div).html(" ");13 }14//添加类别15 function typeAdd(div) {16var tr = $(div).parents("tr"); //获取当前⾏的Tr17/*设置⽉份⾏数+1*/18//findFather(tr);19var monthtd = findFather(tr); //获取当前⾏的⽉份TD20var monthtdSpan = monthtd.attr("rowspan"); //获取当前⾏的⽉份的TD数21 monthtd.attr("rowspan", parseInt(monthtdSpan) + 1); //⽉份的TD数+122/*添加⼀⾏空⾏*/23var newtr = document.createElement("tr");24var newtrHtml = '<td rowspan="1">' +25'<div class="typeadd" onmouseover="addover(this)" onclick="typeAdd(this)" onmouseout="addout(this)"> </div>' +26'<div class="typename">⽆</div>' +27'<div class="typecut" onmouseover="cutover(this)" onclick="typeCut(this)" onmouseout="cutout(this)"> </div>' +28'</td>' +29'<td>' +30'<div class="contentadd" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div>' +31'<div class="content">⽆</div>' +32'<div class="contentcut" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div>' +33'</td>' +34'<td>' +35'<div class="contentadd_" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div>' +36'<div class="content_">⽆</div>' +37'<div class="contentcut_" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div>' +38'</td>';39 $(newtr).html(newtrHtml);40 tr = findNextFather(tr);41 $(newtr).insertBefore(tr);42 }43//类别移除44 function typeCut(div) {45if (!confirm("移除此单元会导致后续单元全部移除,是否移除?")) {46return false;47 }48var tr = $(div).parents("tr"); //获取当前⾏的Tr49var firstTd = tr.find("td").eq(0);50//如果没有⽉份列,则移除51if (firstTd.html().indexOf("⽉份") == -1) {52var rows = parseInt(firstTd.attr("rowspan"));53for (var i = 1; i < rows; i++) {54 tr.next().remove();55 }56var ftd = $(findFather(tr));57//alert(ftd.attr("rowspan"));58var frows = parseInt(ftd.attr("rowspan")) - rows;59//alert(frows);60 ftd.attr("rowspan", frows);61 tr.remove();62 } else {63//如果有⽉份列,则提取⽉份列,添加到下⼀个64var secondTd = tr.find("td").eq(1);65var frows = parseInt(firstTd.attr("rowspan"));//⽉份⾏数66var rows = parseInt(secondTd.attr("rowspan")); //类⾏数67if (frows == rows) {68 alert("次类为当⽉唯⼀类别,⽆法删除");69 } else {70var newfirtstTd = firstTd;71var nextTr = findtypeFatherNext(tr);72//alert(nextTr.html());73var nextTr_firstTd = $(nextTr).find("td").eq(0);74//alert(nextTr_firstTd.html());75 $(newfirtstTd).insertBefore(nextTr_firstTd);76 newfirtstTd.attr("rowspan", frows - rows);77for (var i = 1; i < rows; i++) {78 tr.next().remove()79 }80 tr.remove();81 }82 }83 }84//添加计划85 function contentAdd(div) {86var tr = $(div).parents("tr"); //获取当前⾏的Tr87/*设置⽉份⾏数+1*/88var monthtd = findFather(tr); //获取当前⾏的⽉份TD89var monthtdSpan = monthtd.attr("rowspan"); //获取当前⾏的⽉份的TD数90 monthtd.attr("rowspan", parseInt(monthtdSpan) + 1); //⽉份的TD数+191/*设置类型⾏数+1*/92var typetd = findtypeFather(tr);93var typetdSpan = typetd.attr("rowspan"); //获取当前⾏的类型的TD数94 typetd.attr("rowspan", parseInt(typetdSpan) + 1); //类型的TD数+195/*添加⼀⾏空⾏*/96var newtr = document.createElement("tr");97var newtrHtml = '<td>' +98'<div class="contentadd" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div>' +99'<div class="content">⽆</div>' +100'<div class="contentcut" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div>' +101'</td>' +102'<td>' +103'<div class="contentadd_" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div>' +104'<div class="content_">⽆</div>' +105'<div class="contentcut_" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div>' +106'</td>';107 $(newtr).html(newtrHtml);108 $(newtr).insertAfter(tr);109 }110//移除计划111 function contentCut(div) {112var tr = $(div).parents("tr"); //获取当前⾏的Tr113if (tr.find("td").eq(0).html().indexOf("typename") != -1) {114 alert("此单元⽆法移除,请移除上级单元");115 } else if (tr.find("td").eq(0).html().indexOf("⽆")==-1) {116 alert("此单元⽆法移除,请移除上级单元");117 } else if (tr.find("td").eq(0).html().indexOf("⽉份") != -1) {118 alert("此单元⽆法移除,请移除上级单元");119 } else {120/*设置⽉份⾏数+1*/121var monthtd = findFather(tr); //获取当前⾏的⽉份TD122var monthtdSpan = monthtd.attr("rowspan"); //获取当前⾏的⽉份的TD数123 monthtd.attr("rowspan", parseInt(monthtdSpan) - 1); //⽉份的TD数+1124/*设置类型⾏数+1*/125var typetd = findtypeFather(tr);126var typetdSpan = typetd.attr("rowspan"); //获取当前⾏的类型的TD数127 typetd.attr("rowspan", parseInt(typetdSpan) - 1); //类型的TD数+1128 tr.remove();129 }130 }131132//递归获取下⼀个⽬标TR133 function findNextFather(tr) {134var tr = $(tr).next();135if (tr.html().indexOf("typename") != -1) {136return tr;137 } else if (tr.html().indexOf("⽉份") != -1) {138return tr;139 } else {140return findNextFather(tr);141 }142 }143//递归获取上⼀个⽉份列144 function findFather(tr) {145//获取当前TR下的第⼀个TD146var monthtd = tr.find("td").eq(0);147//如果不包含"⽉份"关键字148if (monthtd.html().indexOf("⽉份") == -1) {149 tr = $(tr).prev(); //向上推⼀个TR150return findFather(tr);//传⼊151 } else {152return monthtd;153 }154 }155//递归获取上⼀个类型列156 function findtypeFather(tr) {157//获取当前TR下的第⼀个TD158var typetd = tr.find("td").eq(0);159if (typetd.html().indexOf("⽉份") != -1) {160return tr.find("td").eq(1);161 } else if (typetd.html().indexOf("typename") == -1) {162 tr = $(tr).prev(); //向上推⼀个TR163return findtypeFather(tr); //传⼊164 } else {165return typetd;166 }167 }168//递归获取下⼀个类型列169 function findtypeFatherNext(tr) {170//获取当前TR下的第⼀个TD171 tr = tr.next();172var typetd = tr.find("td").eq(0);173if (typetd.html().indexOf("typename") != -1) {174return tr;175 } else {176return findtypeFatherNext(tr);177 }178 }179 </script>⼀下是HTML代码1 <table class="FormTable">2 <thead>3 <tr>4 <td style="width:10%">⽉份</td>5 <td style="width:10%">类别</td>6 <td style="width:40%">护理部</td>7 <td style="width:40%">⼤科</td>8 </tr>9 </thead>10 <tbody>11 <tr>12 <td rowspan="1">⼀⽉份</td>13 <td rowspan="1">14 <div class="typeadd" onmouseover="addover(this)" onclick="typeAdd(this)" onmouseout="addout(this)"> </div>15 <div class="typename">⽆</div>16 <div class="typecut" onmouseover="cutover(this)" onclick="typeCut(this)" onmouseout="cutout(this)"> </div>17 </td>18 <td>19 <div class="contentadd" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div>20 <div class="content">⽆</div>21 <div class="contentcut" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div>22 </td>23 <td>24 <div class="contentadd_" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div>25 <div class="content_">⽆</div>26 <div class="contentcut_" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div>27 </td>28 </tr>29 <tr>30 <td rowspan="1">⼆⽉份</td>31 <td rowspan="1">32 <div class="typeadd" onmouseover="addover(this)" onclick="typeAdd(this)" onmouseout="addout(this)"> </div>33 <div class="typename">⽆</div>34 <div class="typecut" onmouseover="cutover(this)" onclick="typeCut(this)" onmouseout="cutout(this)"> </div>35 </td>36 <td>37 <div class="contentadd" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div>38 <div class="content">⽆</div>39 <div class="contentcut" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div>40 </td>41 <td>42 <div class="contentadd_" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div>43 <div class="content_">⽆</div>44 <div class="contentcut_" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div>45 </td>46 </tr>47 <tr>48 <td rowspan="1">三⽉份</td>49 <td rowspan="1">50 <div class="typeadd" onmouseover="addover(this)" onclick="typeAdd(this)" onmouseout="addout(this)"> </div>51 <div class="typename">⽆</div>52 <div class="typecut" onmouseover="cutover(this)" onclick="typeCut(this)" onmouseout="cutout(this)"> </div>53 </td>54 <td>55 <div class="contentadd" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div>56 <div class="content">⽆</div>57 <div class="contentcut" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div>58 </td>59 <td>60 <div class="contentadd_" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div>61 <div class="content_">⽆</div>62 <div class="contentcut_" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div>63 </td>64 </tr>65 <tr>66 <td rowspan="1">四⽉份</td>67 <td rowspan="1">68 <div class="typeadd" onmouseover="addover(this)" onclick="typeAdd(this)" onmouseout="addout(this)"> </div>69 <div class="typename">⽆</div>70 <div class="typecut" onmouseover="cutover(this)" onclick="typeCut(this)" onmouseout="cutout(this)"> </div>71 </td>72 <td>73 <div class="contentadd" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div>74 <div class="content">⽆</div>75 <div class="contentcut" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div>76 </td>77 <td>78 <div class="contentadd_" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div>79 <div class="content_">⽆</div>80 <div class="contentcut_" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div>81 </td>82 </tr>83 <tr>84 <td rowspan="1">五⽉份</td>85 <td rowspan="1">86 <div class="typeadd" onmouseover="addover(this)" onclick="typeAdd(this)" onmouseout="addout(this)"> </div>87 <div class="typename">⽆</div>88 <div class="typecut" onmouseover="cutover(this)" onclick="typeCut(this)" onmouseout="cutout(this)"> </div>89 </td>90 <td>91 <div class="contentadd" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div>92 <div class="content">⽆</div>93 <div class="contentcut" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div>94 </td>95 <td>96 <div class="contentadd_" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div>97 <div class="content_">⽆</div>98 <div class="contentcut_" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div>99 </td>100 </tr>101 <tr>102 <td rowspan="1">六⽉份</td>103 <td rowspan="1">104 <div class="typeadd" onmouseover="addover(this)" onclick="typeAdd(this)" onmouseout="addout(this)"> </div>105 <div class="typename">⽆</div>106 <div class="typecut" onmouseover="cutover(this)" onclick="typeCut(this)" onmouseout="cutout(this)"> </div>107 </td>108 <td>109 <div class="contentadd" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div> 110 <div class="content">⽆</div>111 <div class="contentcut" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div> 112 </td>113 <td>114 <div class="contentadd_" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div> 115 <div class="content_">⽆</div>116 <div class="contentcut_" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div> 117 </td>118 </tr>119 <tr>120 <td rowspan="1">七⽉份</td>121 <td rowspan="1">122 <div class="typeadd" onmouseover="addover(this)" onclick="typeAdd(this)" onmouseout="addout(this)"> </div>123 <div class="typename">⽆</div>124 <div class="typecut" onmouseover="cutover(this)" onclick="typeCut(this)" onmouseout="cutout(this)"> </div>125 </td>126 <td>127 <div class="contentadd" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div> 128 <div class="content">⽆</div>129 <div class="contentcut" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div> 130 </td>131 <td>132 <div class="contentadd_" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div> 133 <div class="content_">⽆</div>134 <div class="contentcut_" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div> 135 </td>136 </tr>137 <tr>138 <td rowspan="1">⼋⽉份</td>139 <td rowspan="1">140 <div class="typeadd" onmouseover="addover(this)" onclick="typeAdd(this)" onmouseout="addout(this)"> </div>141 <div class="typename">⽆</div>142 <div class="typecut" onmouseover="cutover(this)" onclick="typeCut(this)" onmouseout="cutout(this)"> </div>143 </td>144 <td>145 <div class="contentadd" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div> 146 <div class="content">⽆</div>147 <div class="contentcut" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div> 148 </td>149 <td>150 <div class="contentadd_" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div> 151 <div class="content_">⽆</div>152 <div class="contentcut_" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div> 153 </td>154 </tr>155 <tr>156 <td rowspan="1">九⽉份</td>157 <td rowspan="1">158 <div class="typeadd" onmouseover="addover(this)" onclick="typeAdd(this)" onmouseout="addout(this)"> </div>159 <div class="typename">⽆</div>160 <div class="typecut" onmouseover="cutover(this)" onclick="typeCut(this)" onmouseout="cutout(this)"> </div>161 </td>162 <td>163 <div class="contentadd" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div> 164 <div class="content">⽆</div>165 <div class="contentcut" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div> 166 </td>167 <td>168 <div class="contentadd_" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div> 169 <div class="content_">⽆</div>170 <div class="contentcut_" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div> 171 </td>172 </tr>173 <tr>174 <td rowspan="1">⼗⽉份</td>175 <td rowspan="1">176 <div class="typeadd" onmouseover="addover(this)" onclick="typeAdd(this)" onmouseout="addout(this)"> </div>177 <div class="typename">⽆</div>178 <div class="typecut" onmouseover="cutover(this)" onclick="typeCut(this)" onmouseout="cutout(this)"> </div>179 </td>180 <td>181 <div class="contentadd" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div> 182 <div class="content">⽆</div>183 <div class="contentcut" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div> 184 </td>185 <td>186 <div class="contentadd_" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div> 187 <div class="content_">⽆</div>188 <div class="contentcut_" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div> 189 </td>190 </tr>191 <tr>192 <td rowspan="1">⼗⼀⽉份</td>193 <td rowspan="1">194 <div class="typeadd" onmouseover="addover(this)" onclick="typeAdd(this)" onmouseout="addout(this)"> </div>195 <div class="typename">⽆</div>196 <div class="typecut" onmouseover="cutover(this)" onclick="typeCut(this)" onmouseout="cutout(this)"> </div>197 </td>198 <td>199 <div class="contentadd" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div> 200 <div class="content">⽆</div>201 <div class="contentcut" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div> 202 </td>203 <td>204 <div class="contentadd_" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div> 205 <div class="content_">⽆</div>206 <div class="contentcut_" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div> 207 </td>208 </tr>209 <tr>210 <td rowspan="1">⼗⼆⽉份</td>211 <td rowspan="1">212 <div class="typeadd" onmouseover="addover(this)" onclick="typeAdd(this)" onmouseout="addout(this)"> </div>213 <div class="typename">⽆</div>214 <div class="typecut" onmouseover="cutover(this)" onclick="typeCut(this)" onmouseout="cutout(this)"> </div>215 </td>216 <td>217 <div class="contentadd" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div> 218 <div class="content">⽆</div>219 <div class="contentcut" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div> 220 </td>221 <td>222 <div class="contentadd_" onmouseover="addover(this)" onclick="contentAdd(this)" onmouseout="addout(this)"> </div> 223 <div class="content_">⽆</div>224 <div class="contentcut_" onmouseover="cutover(this)" onclick="contentCut(this)" onmouseout="cutout(this)"> </div> 225 </td>226 </tr>227 </tbody>228 </table>样式:1 .typeadd2 {3float:left;width:6%;4 }5 .typeadd:hover6 {7 background-color:#ccc;8 cursor:pointer;9 }10 .typecut11 {12float:left;width:6%;13 }14 .typecut:hover15 {16 background-color:#ccc;17 cursor:pointer;18 }19 .contentadd20 {21float:left;width:6%;22 }23 .contentadd:hover24 {25 background-color:#ccc;26 cursor:pointer;27 }28 .contentcut29 {30float:left;width:6%;31 }32 .contentcut:hover33 {34 background-color:#ccc;35 cursor:pointer;36 }37 .contentadd_38 {39float:left;width:6%;40 }41 .contentadd_:hover42 {43 background-color:#ccc;44 cursor:pointer;45 }46 .contentcut_47 {48float:left;width:6%;49 }50 .contentcut_:hover51 {52 background-color:#ccc;53 cursor:pointer;54 }55 .typename56 {57float:left;width: 88%;58 }59 .content60 {61float:left;width: 88%;62 }63 .content_64 {65float:left;width: 88%;66 }外链jquery1.7.1另外还有个外链css就不贴出来了简单的效果图如下。
JS实现点击按钮表新增一行
![JS实现点击按钮表新增一行](https://img.taocdn.com/s3/m/fa743f7e19e8b8f67d1cb98d.png)
<script type="text/javascript">var i=5;function insRow(){var x=document.getElementById('myTable').insertRow(i+1);var h1=x.insertCell(0);var h2=x.insertCell(1);var h3=x.insertCell(2);var h4=x.insertCell(3);var h5=x.insertCell(4);var h6=x.insertCell(5);var h7=x.insertCell(6);var h8=x.insertCell(7);h1.innerHTML="<div align=center>"+(i+1)+"</div>";h2.innerHTML="<div align=center><input name=name"+i+" type=text size=10></div>";h3.innerHTML="<div align=center><select name=sex"+i+" style=width:35px;><option value=男>男</option><option value=女>女</option></select></div>";h4.innerHTML="<div align=center><input name=birthday"+i+" type=text size=10></div>";h5.innerHTML="<div align=center><input name=cards"+i+" type=text size=15></div>";h6.innerHTML="<div align=center><input name=address"+i+" type=text size=30></div>";h7.innerHTML="<div align=center><input name=tel"+i+" type=text size=13></div>";i=i+1;x.bgColor="#ffffff"}</script><style>td{font-size:12px;}</style><table width="700" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#666666" id="myTable"><tbody><tr align="center"><td width="34" bgcolor="#FFFFFF"><p> </p> </td><td width="78" height="30" bgcolor="#FFFFFF">姓名</td><td width="35" bgcolor="#FFFFFF">性别</td><td width="90" bgcolor="#FFFFFF">出生年月</td><td width="124" bgcolor="#FFFFFF">证件号码</td><td width="222" bgcolor="#FFFFFF">工作单位地址及职务</td><td width="108" bgcolor="#FFFFFF">联系电话</td></tr></tbody><tbody><tr><td width="34" align="center" bgcolor="#FFFFFF">1</td><td height="30" align="center" bgcolor="#FFFFFF"> <input name="name1" type="text" id="name1" size="10" /> </td><td align="center" bgcolor="#FFFFFF"> <select name="sex1" id="sex1" style="width:35px;"><option value="男">男</option><option value="女">女</option></select> </td><td align="center" bgcolor="#FFFFFF"><input name="birthday1" type="text" id="birthday1" size="10" /></td><td align="center" bgcolor="#FFFFFF"><input name="cards1" type="text" id="cards1" size="15" /></td><td align="center" bgcolor="#FFFFFF"><input name="address1" type="text" id="address1" size="30" /></td><td align="center" bgcolor="#FFFFFF"><input name="tel1" type="text" id="tel1" size="13" /></td></tr></tbody><tbody><tr><td width="34" align="center" bgcolor="#FFFFFF">2</td><td height="30" align="center" bgcolor="#FFFFFF"><input name="name2" type="text" id="name2" size="10" /></td><td align="center" bgcolor="#FFFFFF"><select name="sex2" id="sex2" style="width:35px;"> <option value="男">男</option><option value="女">女</option></select></td><td align="center" bgcolor="#FFFFFF"><input name="birthday2" type="text" id="birthday2" size="10" /></td><td align="center" bgcolor="#FFFFFF"><input name="cards2" type="text" id="cards2" size="15" /></td><td align="center" bgcolor="#FFFFFF"><input name="address2" type="text" id="address2" size="30" /></td><td align="center" bgcolor="#FFFFFF"><input name="tel2" type="text" id="tel2" size="13" /></td></tr></tbody><tbody><tr><td width="34" align="center" bgcolor="#FFFFFF">3</td><td height="30" align="center" bgcolor="#FFFFFF"><input name="name3" type="text" id="name3" size="10" /></td><td align="center" bgcolor="#FFFFFF"><select name="sex3" id="sex3" style="width:35px;"> <option value="男">男</option><option value="女">女</option></select></td><td align="center" bgcolor="#FFFFFF"><input name="birthday3" type="text" id="birthday3"size="10" /></td><td align="center" bgcolor="#FFFFFF"><input name="cards3" type="text" id="cards3" size="15" /></td><td align="center" bgcolor="#FFFFFF"><input name="address3" type="text" id="address3" size="30" /></td><td align="center" bgcolor="#FFFFFF"><input name="tel3" type="text" id="tel3" size="13" /></td></tr></tbody><tbody><tr><td width="34" align="center" bgcolor="#FFFFFF">4</td><td height="30" align="center" bgcolor="#FFFFFF"><input name="name4" type="text" id="name4" size="10" /></td><td align="center" bgcolor="#FFFFFF"><select name="sex4" id="sex4" style="width:35px;"> <option value="男">男</option><option value="女">女</option></select></td><td align="center" bgcolor="#FFFFFF"><input name="birthday4" type="text" id="birthday4" size="10" /></td><td align="center" bgcolor="#FFFFFF"><input name="cards4" type="text" id="cards4" size="15" /></td><td align="center" bgcolor="#FFFFFF"><input name="address4" type="text" id="address4" size="30" /></td><td align="center" bgcolor="#FFFFFF"><input name="tel4" type="text" id="tel4" size="13" /></td></tr></tbody><tbody><tr><td width="34" align="center" bgcolor="#FFFFFF">5</td><td height="30" align="center" bgcolor="#FFFFFF"><input name="name5" type="text" id="name5" size="10" /></td><td align="center" bgcolor="#FFFFFF"><select name="sex5" id="sex5" style="width:35px;"> <option value="男">男</option><option value="女">女</option></select></td><td align="center" bgcolor="#FFFFFF"><input name="birthday5" type="text" id="birthday5" size="10" /></td><td align="center" bgcolor="#FFFFFF"><input name="cards5" type="text" id="cards5" size="15" /></td><td align="center" bgcolor="#FFFFFF"><input name="address5" type="text" id="address5" size="30" /></td><td align="center" bgcolor="#FFFFFF"><input name="tel5" type="text" id="tel5" size="13"/></td></tr></tbody><tbody><tr><td width="34" bgcolor="#FFFFFF"> </td><td height="30" colspan="6" align="center" bgcolor="#FFFFFF"><input type="button" onclick="insRow()" value="当报名人数多于5人时,可点击此按钮增加报名人数表单"></td> </tr></tbody><tbody></tbody></table><table width="700" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#666666" id="myTable"><tbody></tbody><tbody></tbody><tbody></tbody><tbody></tbody><tbody></tbody><tbody></tbody><tbody></tbody><tbody><tr><td width="34" rowspan="2" bgcolor="#FFFFFF"> </td><td height="30" align="center" bgcolor="#FFFFFF">是否申请证件</td><td colspan="2" bgcolor="#FFFFFF"> <select name="b4" id="b4" style="width:35px;"><option value="1">是</option><option value="0">否</option></select></td><td width="44" align="center" bgcolor="#FFFFFF">个人<br />申请</td><td width="80" bgcolor="#FFFFFF"> <select name="b5" id="b5" style="width:35px;"><option value="1">是</option><option value="0">否</option></select></td><td rowspan="2" valign="middle" bgcolor="#FFFFFF"> 特别说明:<textarea name="b8" cols="20" rows="3" id="b8"></textarea></td><td rowspan="2" valign="top" bgcolor="#FFFFFF"><br> 客人签名:</td></tr><tr><td height="30" align="center" bgcolor="#FFFFFF">申请日期</td><td colspan="2" bgcolor="#FFFFFF"> <input name="b6" type="text" id="b6" size="15" /></td><td align="center" bgcolor="#FFFFFF">旅行社</td><td align="center" bgcolor="#FFFFFF"><input name="b7" type="text" id="b7" size="10" /></td></tr></tbody></table>。
layui点击数据表格添加或删除一行的例子
![layui点击数据表格添加或删除一行的例子](https://img.taocdn.com/s3/m/e2045fee710abb68a98271fe910ef12d2af9a948.png)
layui点击数据表格添加或删除⼀⾏的例⼦数据表格t2 = {elem: '#test2',data: tableData2,page: false,width: $(parent.window).width()-50,cols: [[{type:'checkbox',field:'id'},{field:'cstMoldNo', title: '客户模号',edit:'text'},{field:'cstProdName', title: '产品名称',edit:'text'},{field:'material', title: '产品材料',edit:'text'},{field:'firstTryDate', title: '验证⽇期',edit:'text'},{field:'deliveryDate', title: '交货⽇期',edit:'text'},{field:'unit', title: '单位',edit:'text'},{field:'count', title: '数量',edit:'text'},{field:'upTax', title: '含税单价',edit:'text'},{field:'priceTax', title: '含税⾦额',edit:'text'},{field:'remark', title: '备注',edit:'text'},{fixed: 'right', title: '操作',width: '10%',align: 'center',toolbar: '#barDemo'}]]};点击添加⼀⾏document.getElementById('addsome2').addEventListener('click',function (data) {var oldData = table.cache["test2"];var data1={};oldData.push(data1);table.reload('test2',{data : oldData});});点击删除⼀⾏if(obj.event === "del"){layer.confirm("你确定要删除么?",{btn:['是的,我确定','我再想想']},function(){var oldData = table.cache["test2"];oldData.splice(obj.tr.data('index'),1);layer.msg("删除成功",{time: 10},function(){table.reload('test2',{data : oldData});});})}以上这篇layui点击数据表格添加或删除⼀⾏的例⼦就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
在Bootstraptable插件基础上新增一行,保存,删除的详解
![在Bootstraptable插件基础上新增一行,保存,删除的详解](https://img.taocdn.com/s3/m/2754f80f640e52ea551810a6f524ccbff121ca74.png)
在Bootstraptable插件基础上新增⼀⾏,保存,删除的详解前台:@button(label:"新增",iconcss:"dm-add",onclick:"addRow")// 删除的数据var deletedData = [];新增⼀⾏数据,⽅法⼀:/*** 新增⼀⾏数据*/function addRow(){var count = $('#table_add').bootstrapTable('getData').length;// newFlag == 1的数据为新规的数据$('#table_add').bootstrapTable('insertRow',{index:count,row:{newFlag:"1"}});}注:index:count,其中count是新增⾏的位置,上就是在表格末尾处新增⼀⾏⽅法⼆:(都⼀样,多⼀种参考)// 新增数据var newcount = 0;// 新增配置库信息function addConfigDataBase(){newcount = newcount + 1;$("#search-result").bootstrapTable('insertRow', {index:0, row:{configId:"",configName:""}}); //在表格的第⼀⾏新增}删除⼀⾏:⽅法1:/*** 删除⼀⾏数据*/function deleteRow(row){var count = $('#table_add').bootstrapTable('getData').length;if (count == 1) {info("已经是最后⼀条,不能删除!");return;}var newFlag = row.newFlag;if(newFlag == '1'){// 新规的数据直接删除row.deleteFlag = "true";$('#table_add').bootstrapTable('remove',{field:"deleteFlag", values:["true"]});// 数据删除后合计值区域⾃动重新计算autoCalculate();}else{row.deleteFlag = "true";$('#table_add').bootstrapTable('remove',{field:"deleteFlag", values:["true"]});// 删除flag设置为删除row['deletionFlag'] = '1';deletedData.push(row);// 数据删除后合计值区域⾃动重新计算autoCalculate();}}/*** 保存*/function save(){$('#main-form').bootstrapValidator('validate');if($('#main-form').data('bootstrapValidator').isValid()){var detailList = $('#table_add').bootstrapTable('getData');var leaderValue = document.getElementsByName("leader");for(var i=0;i<detailList.length;i++) {detailList[i].leader = leaderValue[i].defaultValue;}//这段代码是项⽬⾥的作⽤,这⾥⽆⽤// 数组合并(已删除的表数据和当前页⾯的数据)detailList = detailList.concat(deletedData);var assessId = getValue('#assessId');for (var i = 0; i < detailList.length; i++) {detailList[i]['assessId']=assessId;}var params=$("#main-form").serializeObject();params.detailList = detailList;ajax({url:'@url("/ims/appraisalManagement/save.action")',type:'POST',mask:true,data:JSON.stringify(params),contentType:"application/json",success:function(result){saveFileFordowntableForFileOfSon1(result.data);backsuccess("保存成功!",function(){location.href='@url("/ims/appraisalManagement/init.action")';});}});}}⽅法2(这⾥只对新增未保存的删除):function removeConfigDataBase(row){newcount = newcount - 1;row.deleteFlag = "true";// 删除选定的⾏$('#search-result').bootstrapTable('remove',{field:"deleteFlag", values:["true"]}); }后台具体代码就忽略了...。
简单的js表格操作
![简单的js表格操作](https://img.taocdn.com/s3/m/8c33bb17cd1755270722192e453610661ed95a8f.png)
简单的js表格操作效果图:任务:1. ⿏标移到不同⾏上时背景⾊改为⾊值为 #f2f2f2,移开⿏标时则恢复为原背景⾊ #fff var tr=document.getElementsByTagName("tr");for(var i= 0;i<tr.length;i++){bgcChange(tr[i]);}// ⿏标移动改变背景,可以通过给每⾏绑定⿏标移上事件和⿏标移除事件来改变所在⾏背景⾊。
function bgcChange(obj){obj.onmouseover=function(){obj.style.backgroundColor="#f2f2f2";}obj.onmouseout=function(){obj.style.backgroundColor="#fff";}}2. 点击添加按钮,能动态在最后添加⼀⾏var num=2;function add(){num++;var tr=document.createElement("tr");var xh=document.createElement("td");var xm=document.createElement("td");xh.innerHTML="xh00"+num;xm.innerHTML="第"+num+"位学⽣";var del=document.createElement("td");del.innerHTML="<a href='javascript:;' onclick='del(this)' >删除</a>";var tab=document.getElementById("table");tab.appendChild(tr);tr.appendChild(xh);tr.appendChild(xm);tr.appendChild(del);var tr = document.getElementsByTagName("tr");for(var i= 0;i<tr.length;i++){bgcChange(tr[i]);}}3. 点击删除按钮,则删除当前⾏function del(obj){var tr=obj.parentNode.parentNode;tr.parentNode.removeChild(tr);}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
javascript的addtext方法使用举例
![javascript的addtext方法使用举例](https://img.taocdn.com/s3/m/4e2c62c7b8d528ea81c758f5f61fb7360b4c2bfa.png)
javascript的addtext方法使用举例JavaScript的addtext方法使用举例在JavaScript中,可以通过addtext方法向页面中动态地添加文本内容。
addtext方法的主要作用是向指定元素中添加文本,可以是纯文本或HTML标签。
这种方法非常常见且实用,可以通过代码的方式实现页面内容的动态更新。
接下来,我们以中括号内的内容为主题,一步一步回答,详细介绍JavaScript的addtext方法的使用方法和举例。
让我们开始编写一篇1500-2000字的文章。
第一步:理解addtext方法的基本语法和参数在JavaScript中,可以使用DOM(文档对象模型)来访问和操作网页中的元素。
DOM提供了一组方法和属性,用于动态地操作HTML文档。
对于addtext方法,它的基本语法如下:element.addtext(text);其中,element是要添加文本的HTML元素节点,而text是要添加的文本内容。
第二步:使用addtext方法添加纯文本内容首先,我们可以使用addtext方法来向一个文本节点中添加纯文本内容。
考虑以下示例,我们有一个HTML文件,其中包含一个`<div>` 元素,它的`id` 设置为`"myDiv"`。
html<!DOCTYPE html><html><body><div id="myDiv"></div><script>var element = document.getElementById("myDiv");element.addtext("Hello, World!");</script></body></html>在上面的示例中,我们通过`getElementById`方法获取了`myDiv`元素。
element el-table触发表格展开
![element el-table触发表格展开](https://img.taocdn.com/s3/m/323c3269e3bd960590c69ec3d5bbfd0a7856d545.png)
标题:element el-table触发表格展开正文:1. 介绍element el-table组件element el-table是一款基于Vue.js的表格组件,它提供了丰富的功能和灵活的配置选项,可以满足各种不同的表格展示需求。
2. el-table中的展开行功能el-table组件中提供了展开行的功能,可以在表格中的每一行后面新增一个展开按钮,用户点击展开按钮后,可以展示该行的详细信息或者进行其他操作。
这个功能在某些场景下可以提供更丰富的数据展示和交互方式。
3. 触发表格展开的方法在el-table组件中,触发表格展开的方法可以分为两种:点击行展开和点击按钮展开。
3.1 点击行展开在el-table组件中,可以通过设置row-clickable属性来实现点击表格行展开的功能。
当用户点击表格行时,会自动展开该行的详细信息,再次点击时则收起详细信息。
这种触发方式比较直观,用户可以通过点击表格行来查看详细信息,适合展示简单的数据。
3.2 点击按钮展开除了点击行展开外,el-table组件还可以通过设置slot来自定义展开按钮的位置和样式,用户可以在每一行的操作列中新增一个展开按钮,点击按钮后展开该行的详细信息。
这种触发方式可以更灵活地控制展开按钮的显示和位置,适合展示复杂的数据和交互操作。
4. el-table展开行的配置选项在使用el-table展开行功能时,我们可以根据实际需求来进行不同的配置,以下是一些常用的配置选项:4.1 expand行的渲染在el-table中,可以通过设置expand-row-render属性来自定义展开行的渲染方式,用户可以使用slot来自定义展开行的内容和样式,以满足不同的展示需求。
4.2 展开按钮的显示通过设置expand-row-icon属性,可以自定义展开按钮的图标样式,用户可以根据自己的设计风格来自定义展开按钮的样式,以便更好地融入到整体页面中。
4.3 默认展开行el-table组件还提供了expand-default-sort和default-expand-all-rows两个属性,用户可以根据具体需求来设置默认展开行的方式,以提升用户体验和页面展示效果。
Vue+element实现表格的增加行、删除行的功能
![Vue+element实现表格的增加行、删除行的功能](https://img.taocdn.com/s3/m/d590a7d49fc3d5bbfd0a79563c1ec5da50e2d6f6.png)
Vue+element实现表格的增加⾏、删除⾏的功能Vue+element 实现表格的增加⾏、删除⾏的功能,先看下效果:如图,点击添加⾏数下⽅会新增⼀⾏表格,点击删除会删除相应⾏的表格实现代码:定义⼀个数组⽤来放表格数据tableData2:[{pjzbid: "",yyfh: '',yyqh: '',yyzh:"",//已⽤⽌号yyzs:"",//已⽤张数yyje:"",//已⽤⾦额wyfh:"",//未⽤符号wyqh:"",//未⽤起号wyzh:"",//未⽤⽌号wyzs:"",//未⽤张数}],在添加框中加⼀个div做容器<el-dialog :title="title" :visible.sync="dialogVisible" :close-on-click-modal="false" @close="cancel('addRuleForm')"><el-form :model="addRuleForm"ref="addRuleForm" :rules="rules"><el-col :span="12"><el-form-item label="交班⼈ :" :label-width="formLabelWidth" prop="jbrmc"><el-select v-model="addRuleForm.jbrmc" placeholder="请选择"ref="selectAppType"><el-option :value="treeData" style="height: auto"><el-tree :data="treeData":default-expanded-keys="[expandedKeys]" :highlight-current="true":expand-on-click-node="false" node-key="id"@node-click="handleNodeClick"></el-tree></el-option></el-select></el-form-item></el-col><el-col :span="12"><el-form-item label="接班⼈" :label-width="formLabelWidth" prop="jbrymc"><el-select v-model="addRuleForm.jbrymc" placeholder="请选择"ref="selectAppType1"><el-option :value="treeData" style="height: auto"><el-tree :data="treeData":default-expanded-keys="[expandedKeys]" :highlight-current="true":expand-on-click-node="false" node-key="id"@node-click="handleNodeClick2"></el-tree></el-option></el-select></el-form-item></el-col><el-col :span="12"><el-form-item label="交接岗位" :label-width="formLabelWidth" prop="ssip" ><el-select v-model="addRuleForm.ssip" placeholder="所属岗位" clearable @change="checkgw"><el-optionv-for="item in gwxx":key="item.id":label="":value="item.id"></el-option></el-select></el-form-item></el-col><div v-show="ckh"><el-col :span="12"><el-form-item label="窗⼝号" :label-width="formLabelWidth" prop="ckh"><el-select v-model="addRuleForm.ckh" placeholder="窗⼝号" clearable @change="checkckh"><el-optionv-for="item in ck":key="item.id":label="":value="item.id"></el-option></el-select></el-col></div><el-col :span="12"><el-form-item label="现⾦:" :label-width="formLabelWidth" prop="xj"><el-input v-model="addRuleForm.xj" placeholder="现⾦(元)" clearable type="text"></el-input></el-form-item></el-col><el-col :span="12"><el-form-item label="⽀票(张):" :label-width="formLabelWidth" prop="zpz"><el-input v-model="addRuleForm.zpz" placeholder="⽀票(张)" clearable type="text"></el-input><!-- <el-input-number v-model="addRuleForm.zpz" :min="1" :max="100"></el-input-number>--></el-form-item></el-col><el-col :span="12"><el-form-item label="⽀票(元)" :label-width="formLabelWidth" prop="zpy"><el-input v-model="addRuleForm.zpy" placeholder="⽀票(元)" clearable type="text"></el-input></el-form-item></el-col><el-col :span="12"><el-form-item label="银⾏卡凭证(张):" :label-width="formLabelWidth" prop="yhkpzz"><!-- <el-input-number v-model="addRuleForm.yhkpzz" :min="1" :max="100"></el-input-number>--><el-input v-model="addRuleForm.yhkpzz" placeholder="银⾏卡凭证(张)" clearable type="text"></el-input> </el-form-item></el-col><el-col :span="12"><el-form-item label="银⾏卡凭证(元)" :label-width="formLabelWidth" prop="yhkpzy"><el-input v-model="addRuleForm.yhkpzy" placeholder="银⾏卡凭证(元)" clearable type="text"></el-input> </el-form-item></el-col><el-col :span="12"><el-form-item label="备⽤⾦" :label-width="formLabelWidth" prop="byj"><el-input v-model="addRuleForm.byj" placeholder="备⽤⾦" clearable type="text"></el-input></el-form-item></el-col><el-col :span="12"><el-form-item label="备品" :label-width="formLabelWidth" prop="bp"><el-input v-model="addRuleForm.bp" placeholder="备品" clearable type="text"></el-input></el-form-item></el-col><el-col :span="12"><el-form-item label="交接事项" :label-width="formLabelWidth" prop="jjsx"><el-input v-model="addRuleForm.jjsx" placeholder="交接事项" clearable type="text"></el-input></el-form-item></el-col><el-col :span="12"><el-form-item label="已交付⾏李票" :label-width="formLabelWidth" prop="yjfxlp"><el-input v-model="addRuleForm.yjfxlp" placeholder="已交付⾏李票" clearable type="text"></el-input><!--<el-input-number v-model="addRuleForm.yjfxlp" :min="1" :max="100"></el-input-number>--></el-form-item></el-col><el-col :span="12"><el-form-item label="已交付包裹票" :label-width="formLabelWidth" prop="yjfbgp"><el-input v-model="addRuleForm.yjfbgp" placeholder="已交付包裹票" clearable type="text"></el-input><!-- <el-input-number v-model="addRuleForm.yjfbgp" :min="1" :max="100"></el-input-number>--></el-form-item></el-col><el-col :span="12"><el-form-item label="已交付货票" :label-width="formLabelWidth" prop="yjfhp"><el-input v-model="addRuleForm.yjfhp" placeholder="已交付货票" clearable type="text"></el-input><!-- <el-input-number v-model="addRuleForm.yjfhp" :min="1" :max="100"></el-input-number>--></el-form-item></el-col><el-col :span="12"><el-form-item label="未交付⾏李票" :label-width="formLabelWidth" prop="wjfxlp"><el-input v-model="addRuleForm.wjfxlp" placeholder="未交付⾏李票" clearable type="text"></el-input><!-- <el-input-number v-model="addRuleForm.wjfxlp" :min="1" :max="100"></el-input-number>--></el-form-item></el-col><el-col :span="12"><el-form-item label="未交付包裹票" :label-width="formLabelWidth" prop="wjfbgp"><el-input v-model="addRuleForm.wjfbgp" placeholder="未交付包裹票" clearable type="text"></el-input><!-- <el-input-number v-model="addRuleForm.wjfbgp" :min="1" :max="100"></el-input-number>--></el-form-item></el-col><el-col :span="12"><el-form-item label="未交付货票" :label-width="formLabelWidth" prop="wjfhp"><el-input v-model="addRuleForm.wjfhp" placeholder="未交付货票" clearable type="text"></el-input><!-- <el-input-number v-model="addRuleForm.wjfhp" :min="1" :max="100"></el-input-number>--></el-form-item></el-col><el-form-item label="记事" :label-width="formLabelWidth" prop="js"><el-input v-model="addRuleForm.js" placeholder="记事" clearable type="text"></el-input> </el-form-item></el-col></el-form><div class="TestWord"><el-col ><el-button @click="addLine">添加⾏数</el-button></el-col><el-table:data="tableData2"style="width: 100%":rules="rules"><el-table-column prop="pjzbid" label="票据类型"><template slot-scope="scope"><el-select v-model="scope.row.pjzbid" :label-width="formLabelWidth" clearable ><el-optionv-for="item in pjlxData":key="item.id":label="item.zdmc":value="item.id"></el-option></el-select></template></el-table-column><el-table-column prop="yyfh" label="已⽤符号"><template slot-scope="scope"><el-input v-model="scope.row.yyfh" placeholder="已⽤符号"></el-input></template></el-table-column><el-table-column prop="yyqh" label="已⽤起号"><template slot-scope="scope"><el-input v-model="scope.row.yyqh" placeholder="已⽤起号"></el-input></template></el-table-column><el-table-column prop="yyzh" label="已⽤⽌号"><template slot-scope="scope"><el-input v-model="scope.row.yyzh" placeholder="已⽤⽌号"></el-input></template></el-table-column><el-table-column prop="yyzs" label="已⽤张数" ><template slot-scope="scope"><el-input v-model="scope.row.yyzs" placeholder="已⽤张数" ></el-input></template></el-table-column><el-table-column prop="yyje" label="已⽤⾦额"><template slot-scope="scope"><el-input v-model="scope.row.yyje" placeholder="已⽤⾦额"></el-input></template></el-table-column><el-table-column prop="wyfh" label="未⽤符号"><template slot-scope="scope"><el-input v-model="scope.row.wyfh" placeholder="未⽤符号"></el-input></template></el-table-column><el-table-column prop="wyqh" label="未⽤起号"><template slot-scope="scope"><el-input v-model="scope.row.wyqh" placeholder="未⽤起号"></el-input></template></el-table-column><el-table-column prop="wyzh" label="未⽤⽌号"><template slot-scope="scope"><el-input v-model="scope.row.wyzh" placeholder="未⽤⽌号"></el-input></template></el-table-column><el-table-column prop="wyzs" label="未⽤张数" ><template slot-scope="scope"><el-input v-model="scope.row.wyzs" placeholder="未⽤张数" ></el-input></template></el-table-column><el-table-column prop="bookbuytime" label="操作"><template slot-scope="scope"><el-buttonsize="mini"type="danger"v-if="!scope.row.editing"@click="handleDelete(scope.$index, scope.row)">删除</el-button></template></el-table-column></el-table></div><!-- 确定、取消按钮 --><div slot="footer"class="dialog-footer"><el-button type="primary" @click="onSubmit('addRuleForm')">确定</el-button> <el-button type="primary" @click="cancel('addRuleForm')">取消</el-button> </div></el-dialog>添加⾏数⽅法:addLine:function(){var newValue = {pjzbid: "",yyfh: '',yyqh: '',yyzh:"",//已⽤⽌号yyzs:"",//已⽤张数yyje:"",//已⽤⾦额wyfh:"",//未⽤符号wyqh:"",//未⽤起号wyzh:"",//未⽤⽌号wyzs:"",//未⽤张数};//添加新的⾏数this.tableData2.push(newValue);},删除⾏数⽅法:handleDelete:function(index,row){//删除⾏数this.tableData2.splice(index, 1)},编辑回显的话返回list类型的实体给tableData2 就⾏。
js动态添加表格数据使用insertRow和insertCell实现
![js动态添加表格数据使用insertRow和insertCell实现](https://img.taocdn.com/s3/m/8207c68b50e79b89680203d8ce2f0066f53364d2.png)
js动态添加表格数据使⽤insertRow和insertCell实现效果图:代码:js动态添加表格数据_2.html复制代码代码如下:<!DOCTYPE html><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>js动态添加表格数据_2 使⽤insertRow和insertCell⽅法实现</title><script type="text/javascript">var mailArr = [{ "title": "⼀个c#问题", "name": "张三", "date": "2014-03-21" },{ "title": "⼀个javascript问题", "name": "李四", "date": "2014-03-21" },{ "title": "⼀个c问题", "name": "五五", "date": "2014-03-21" },{ "title": "⼀个c++问题", "name": "赵六", "date": "2014-03-21" }];var tab = null;window.onload = function () {loadTab();//全选document.getElementById("selA").onclick = function() {if (document.getElementById("selA").checked == true) {seleAll(tab, true);} else {seleAll(tab, false);}};//删除所有的选中的document.getElementById("delSel").onclick = function() {//遍历所有的input控件即可(除了最后⼀个全选⽤的checkbox)var chks = document.getElementsByTagName('input');for (var i = chks.length - 2; i >=0; i--) {var chk = chks[i];if (chk.checked==true) {//选中⾏删除处理var rowNow = chk.parentNode.parentNode;rowNow.parentNode.removeChild(rowNow);} else {alert("really");}}};};function loadTab() {tab = document.getElementById("tb");//把mailArr循环遍历⽅式以tr的⽅式加⼊表格中for (var rowindex = 0; rowindex < mailArr.length; rowindex++) {//var tr = tab.insertRow(-1);//-1指最后⼀⾏var tr = tab.insertRow(tab.rows.length - 1);//插⼊到末⼆⾏,最后⼀⾏要给全选那⼀⾏保留着var td1 = tr.insertCell(-1);td1.innerHTML = "<input type='checkbox'/>";var td2 = tr.insertCell(-1);td2.innerHTML = mailArr[rowindex].title;var td3 = tr.insertCell(-1);td3.innerHTML = mailArr[rowindex].name;var td4 = tr.insertCell(-1);td4.innerHTML = mailArr[rowindex].date;}}//要使全选按钮⽣效,就要遍历所有的表格的⾏function seleAll(mailTab, isSel) {for (var i = 0; i < mailTab.rows.length; i++) {var tr = mailTab.rows[i];tr.cells[0].childNodes[0].checked = isSel;}}</script></head><body><table id="tb" border="1" style="border-collapse: collapse;"><tr><th>序列</th><th>标题</th><th>发邮⼈</th><th>发件时间</th></tr><!-- 循环增加 --><!-- 全选 --><tr><td colspan="4"><input id="selA" type="checkbox" /><label for="selA">全选</label> <a href="#" id="delSel">删除</a></td></tr></table></body></html>。
js表格上下移动javascript实现
![js表格上下移动javascript实现](https://img.taocdn.com/s3/m/447057f9b9f67c1cfad6195f312b3169a451eafc.png)
js表格上下移动javascript实现实现效果:点击按钮,上下移动⾏思路:实现代码:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>test.html</title><!-- 实现思路:将上按钮和下按钮元素,分别循环添加up事件和down事件,当事件触发时,获取当前点击的元素的⽗级的⽗级的tr,和tr的⽗级tbody,tbody的⽗级table --> <!-- 循环找出表格全部⾏等于当前点击⾏的元素找出他的索引 --><script type="text/javascript">function up(obj) {// 1.获取trvar tr = obj.parentNode.parentNode;// 2.获取tbodyvar tbody = tr.parentNode;// 4.获取索引var rowIdx = 0;// 5.遍历tbody下全部⾏for (var i = 0; i < tbody.rows.length; i++) {// 6. 判断是否等于当前点击按钮元素的trif (tbody.rows[i] == tr) {// 7. 如果等于,将i的值给索引遍历,并跳出循环rowIdx = i;break;}}// 排除第⼀⾏,不再往上//8. 如果索引等于0 就是第⼀⾏了,不能再往上了if (rowIdx == 0) return alert('已经是最上⼀⾏了');// 如果不是第⼀⾏的索引,继续往下// 9.1 获取并存储当前tr 的前⼀个tr元素var preTr = tbody.rows[rowIdx - 1];// 9.2 获取并存储当前tr 的下⼀个tr元素var nextTr = tr.nextSibling;// 9.3 移除当前tr的前⼀个trtbody.removeChild(preTr);// 10.1. 判断当前tr是否存在下⼀个tr 如果存在则插⼊在下⼀个tr之前格式insertBefore(要插⼊的元素, 定位的元素)作⽤:将要插⼊的元素插⼊在定位元素之前// 10.2 否则直接追加在表格的最后// 在这⾥就⼀个⽬的将当前tr的前⼀个元素删除了并把它放在我当前tr的之后,那我当前tr排位就上升了// 所以如果我当前有下⼀个tr就插⼊在他的之前,如果没有证明我是在最后⼀⾏,那就直接将元素追加在表格后⾯就⾏了if (nextTr) tbody.insertBefore(preTr, nextTr);else tbody.appendChild(preTr);// -- -- --可选项实现移动保持序号不变-- -- -- -- -- --// 1.获取当前tr 第⼀个td的内容// var num = tr.cells[0].innerHTML;// 2. 将当前tr 第⼀个td的内容赋值为前⼀个tr的第⼀个td的内容// tr.cells[0].innerHTML = preTr.cells[0].innerHTML;// 3. 将前⼀个tr的第⼀个td内容赋值为当前tr第⼀个td的内容// preTr.cells[0].innerHTML = num;// 4. 实现原理类似于变量值交换,每次移动时将当前tr和前⼀个tr各⾃的第⼀个td内容进⾏交换即可,因为这⾥是向上的}function down(obj) {// 1.获取当前trvar tr = obj.parentNode.parentNode;// 2. 通过当前tr获取tbodyvar tbody = tr.parentNode;// 3.循环tbody每⼀⾏找出和当前tr等于的元素并将索引给rowidx变量var rowIdx = 0;for (var i = 0; i < tbody.rows.length; i++) {if (tbody.rows[i] == tr) {rowIdx = i;break;}}// 4.判断如果索引和tbody总⾏长度相等那么就是说当前tr处于最后⼀⾏不能向下移动了,直接返回// -1 是因为length的长度是从1开始算的,⽽索引是从0开始算的,所以-1 两个值才对等if (rowIdx == tbody.rows.length - 1) return alert('已经是最后⼀⾏了');// 5.获取当前tr的下⼀个trvar nextTr = tbody.rows[rowIdx + 1];// 6.获取下⼀个tr 的下⼀个trvar nextTrSibling = nextTr.nextSibling;// 7.移除当前trtbody.removeChild(tr);// 8. 判断是否存在下个tr的下个tr 存在则将当前tr 插⼊在他的之前if (nextTrSibling) tbody.insertBefore(tr, nextTrSibling);else tbody.appendChild(tr);// 9.如果没有就证明我在倒数第⼆⾏那就直接追加就好了// -- -- --可选项实现移动保持序号不变 -- -- -- -- -- --// 实现原理:采⽤交换变量的原理,都是交换内容来实现保持序号不变,只不过这⾥是和当前tr的下⼀个tr的第⼀个td交换 // var num = tr.cells[0].innerHTML;// tr.cells[0].innerHTML = nextTr.cells[0].innerHTML;// nextTr.cells[0].innerHTML = num;}// 上⾯是封装的实现代码,下⾯是获取up元素和 down 按钮元素分别添加事件侦听// 1.侦听当html加载完时执⾏函数内代码window.onload = function() {// 2。
JS组件BootstrapTable表格行拖拽效果实现代码
![JS组件BootstrapTable表格行拖拽效果实现代码](https://img.taocdn.com/s3/m/633e05bbd0f34693daef5ef7ba0d4a7302766cb0.png)
JS组件BootstrapTable表格⾏拖拽效果实现代码⼀、业务需求及实现效果项⽬涉及到订单模块,那天突然接到⼀个需求,说是两种不同状态的订单之间要实现插单的效果,页⾯上呈现⽅式是:左右两个Table,左边Table⾥⾯是状态为1的订单,右边Table⾥⾯是状态为2订单,左边Table⾥⾯的⾏数据拖动到右边Table⾥⾯指定⾏的位置,拖动完成后,左边表格减少⼀⾏,右边表格增加⼀⾏。
除此之外,还需要撤销操作(相当于Ctrl + Z操作),能够返回到上⼀步的状态。
可能描述会让⼤家模拟两可,反正已经实现了,先来看看效果图吧。
1、先看看拖动之前的效果2、这是拖动左边表格⾏数据的效果3、拖动⼀⾏完成之后表格数据的效果4、第⼆次、第三次拖动完成后效果5、右边表格上⾯撤销操作点击效果6、多次点击撤销,表格回到初始状态⼆、代码⽰例接到需求的第⼀感觉是应该上Bootstrap table api⾥⾯找⼀下,毕竟开源的⼒量是强⼤的,或许有相关的⽰例呢。
经过⼀番查找,很可惜,Bootstrap Table没有这种两张表格之间的操作。
想想其实也可以理解,Bootstrap Table是针对某个动态表格数据绑定的,它的侧重点是表格内部的功能,⽐如表格内部⾏的拖拽排序(Reorder Rows)有很好的解决⽅案,对于像博主这样的特殊需求,似乎也应该⾃⼰去实现。
1、需求分析既然决定⾃⼰去写,开始分析需求,似乎这个操作⾥⾯⽐较困难的是拖拽效果,说到拖拽效果,原来使⽤JsPlumb的时候那使⽤太多了,于是就想到了我们神奇的JQuery UI⾥⾯的draggable.js 和droppable.js。
拖拽的问题解决了,那么还有⼀个难点,就是撤销操作怎么办?我们知道Ctrl+z的意思是还原,什么叫还原?就是返回到上⼀步的操作,那么前提是要能够保存上⼀步的状态,说到保存某⼀步的状态,博主就知道怎么做了,需要⼀个全局变量Json,⾥⾯要有三个键值对,分别是当前步骤的索引、左边表格的数据、右边表格的数据。
react 按钮 表格
![react 按钮 表格](https://img.taocdn.com/s3/m/975dc83526284b73f242336c1eb91a37f11132ec.png)
react 按钮表格如果你想在React中创建一个带有按钮的表格,你可以使用以下步骤:1. 创建一个React组件来表示表格,例如Table.js。
2. 在组件中定义表格的行和列数据,以及按钮的点击事件处理函数。
3. 使用render方法渲染表格,并为每一行添加按钮元素。
下面是一个简单的示例代码,展示如何实现一个带有按钮的表格:javascript复制代码:import React from 'react';const Table = () => {const rows = [{ id: 1, name: 'John', age: 25 },{ id: 2, name: 'Jane', age: 30 },{ id: 3, name: 'Bob', age: 35 },];const handleButtonClick = (id) => {alert(`Button clicked for row ${id}`);};return (<table><thead><tr><th>ID</th><th>Name</th><th>Age</th><th></th></tr></thead><tbody>{rows.map((row) => (<tr key={row.id}><td>{row.id}</td><td>{}</td><td>{row.age}</td><td><button onClick={() =>handleButtonClick(row.id)}>Click Me</button></td></tr>))}</tbody></table>);};export default Table;在上面的示例中,我们定义了一个名为Table的React 组件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<script type="text/javascript">var i=5;function insRow(){var x=document.getElementById('myTable').insertRow(i+1);var h1=x.insertCell(0);var h2=x.insertCell(1);var h3=x.insertCell(2);var h4=x.insertCell(3);var h5=x.insertCell(4);var h6=x.insertCell(5);var h7=x.insertCell(6);var h8=x.insertCell(7);h1.innerHTML="<div align=center>"+(i+1)+"</div>";h2.innerHTML="<div align=center><input name=name"+i+" type=text size=10></div>";h3.innerHTML="<div align=center><select name=sex"+i+" style=width:35px;><option value=男>男</option><option value=女>女</option></select></div>";h4.innerHTML="<div align=center><input name=birthday"+i+" type=text size=10></div>";h5.innerHTML="<div align=center><input name=cards"+i+" type=text size=15></div>";h6.innerHTML="<div align=center><input name=address"+i+" type=text size=30></div>";h7.innerHTML="<div align=center><input name=tel"+i+" type=text size=13></div>";i=i+1;x.bgColor="#ffffff"}</script><style>td{font-size:12px;}</style><table width="700" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#666666" id="myTable"><tbody><tr align="center"><td width="34" bgcolor="#FFFFFF"><p> </p> </td><td width="78" height="30" bgcolor="#FFFFFF">姓名</td><td width="35" bgcolor="#FFFFFF">性别</td><td width="90" bgcolor="#FFFFFF">出生年月</td><td width="124" bgcolor="#FFFFFF">证件号码</td><td width="222" bgcolor="#FFFFFF">工作单位地址及职务</td><td width="108" bgcolor="#FFFFFF">联系电话</td></tr></tbody><tbody><tr><td width="34" align="center" bgcolor="#FFFFFF">1</td><td height="30" align="center" bgcolor="#FFFFFF"> <input name="name1" type="text" id="name1" size="10" /> </td><td align="center" bgcolor="#FFFFFF"> <select name="sex1" id="sex1" style="width:35px;"><option value="男">男</option><option value="女">女</option></select> </td><td align="center" bgcolor="#FFFFFF"><input name="birthday1" type="text" id="birthday1" size="10" /></td><td align="center" bgcolor="#FFFFFF"><input name="cards1" type="text" id="cards1" size="15" /></td><td align="center" bgcolor="#FFFFFF"><input name="address1" type="text" id="address1" size="30" /></td><td align="center" bgcolor="#FFFFFF"><input name="tel1" type="text" id="tel1" size="13" /></td></tr></tbody><tbody><tr><td width="34" align="center" bgcolor="#FFFFFF">2</td><td height="30" align="center" bgcolor="#FFFFFF"><input name="name2" type="text" id="name2" size="10" /></td><td align="center" bgcolor="#FFFFFF"><select name="sex2" id="sex2" style="width:35px;"> <option value="男">男</option><option value="女">女</option></select></td><td align="center" bgcolor="#FFFFFF"><input name="birthday2" type="text" id="birthday2" size="10" /></td><td align="center" bgcolor="#FFFFFF"><input name="cards2" type="text" id="cards2" size="15" /></td><td align="center" bgcolor="#FFFFFF"><input name="address2" type="text" id="address2" size="30" /></td><td align="center" bgcolor="#FFFFFF"><input name="tel2" type="text" id="tel2" size="13" /></td></tr></tbody><tbody><tr><td width="34" align="center" bgcolor="#FFFFFF">3</td><td height="30" align="center" bgcolor="#FFFFFF"><input name="name3" type="text" id="name3" size="10" /></td><td align="center" bgcolor="#FFFFFF"><select name="sex3" id="sex3" style="width:35px;"> <option value="男">男</option><option value="女">女</option></select></td><td align="center" bgcolor="#FFFFFF"><input name="birthday3" type="text" id="birthday3"size="10" /></td><td align="center" bgcolor="#FFFFFF"><input name="cards3" type="text" id="cards3" size="15" /></td><td align="center" bgcolor="#FFFFFF"><input name="address3" type="text" id="address3" size="30" /></td><td align="center" bgcolor="#FFFFFF"><input name="tel3" type="text" id="tel3" size="13" /></td></tr></tbody><tbody><tr><td width="34" align="center" bgcolor="#FFFFFF">4</td><td height="30" align="center" bgcolor="#FFFFFF"><input name="name4" type="text" id="name4" size="10" /></td><td align="center" bgcolor="#FFFFFF"><select name="sex4" id="sex4" style="width:35px;"> <option value="男">男</option><option value="女">女</option></select></td><td align="center" bgcolor="#FFFFFF"><input name="birthday4" type="text" id="birthday4" size="10" /></td><td align="center" bgcolor="#FFFFFF"><input name="cards4" type="text" id="cards4" size="15" /></td><td align="center" bgcolor="#FFFFFF"><input name="address4" type="text" id="address4" size="30" /></td><td align="center" bgcolor="#FFFFFF"><input name="tel4" type="text" id="tel4" size="13" /></td></tr></tbody><tbody><tr><td width="34" align="center" bgcolor="#FFFFFF">5</td><td height="30" align="center" bgcolor="#FFFFFF"><input name="name5" type="text" id="name5" size="10" /></td><td align="center" bgcolor="#FFFFFF"><select name="sex5" id="sex5" style="width:35px;"> <option value="男">男</option><option value="女">女</option></select></td><td align="center" bgcolor="#FFFFFF"><input name="birthday5" type="text" id="birthday5" size="10" /></td><td align="center" bgcolor="#FFFFFF"><input name="cards5" type="text" id="cards5" size="15" /></td><td align="center" bgcolor="#FFFFFF"><input name="address5" type="text" id="address5" size="30" /></td><td align="center" bgcolor="#FFFFFF"><input name="tel5" type="text" id="tel5" size="13"/></td></tr></tbody><tbody><tr><td width="34" bgcolor="#FFFFFF"> </td><td height="30" colspan="6" align="center" bgcolor="#FFFFFF"><input type="button" onclick="insRow()" value="当报名人数多于5人时,可点击此按钮增加报名人数表单"></td> </tr></tbody><tbody></tbody></table><table width="700" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#666666" id="myTable"><tbody></tbody><tbody></tbody><tbody></tbody><tbody></tbody><tbody></tbody><tbody></tbody><tbody></tbody><tbody><tr><td width="34" rowspan="2" bgcolor="#FFFFFF"> </td><td height="30" align="center" bgcolor="#FFFFFF">是否申请证件</td><td colspan="2" bgcolor="#FFFFFF"> <select name="b4" id="b4" style="width:35px;"><option value="1">是</option><option value="0">否</option></select></td><td width="44" align="center" bgcolor="#FFFFFF">个人<br />申请</td><td width="80" bgcolor="#FFFFFF"> <select name="b5" id="b5" style="width:35px;"><option value="1">是</option><option value="0">否</option></select></td><td rowspan="2" valign="middle" bgcolor="#FFFFFF"> 特别说明:<textarea name="b8" cols="20" rows="3" id="b8"></textarea></td><td rowspan="2" valign="top" bgcolor="#FFFFFF"><br> 客人签名:</td></tr><tr><td height="30" align="center" bgcolor="#FFFFFF">申请日期</td><td colspan="2" bgcolor="#FFFFFF"> <input name="b6" type="text" id="b6" size="15" /></td><td align="center" bgcolor="#FFFFFF">旅行社</td><td align="center" bgcolor="#FFFFFF"><input name="b7" type="text" id="b7" size="10" /></td></tr></tbody></table>。