JavaScript实现表格动态添加、复制与删除行的完整代码示例
作者:流萤时间:2026-10-27 16:49:27浏览:164
本文提供了基于JavaScript的表格行动态管理代码,涵盖复制增加行、更新行以及删除行的具体实现。通过获取当前行索引、克隆节点并插入父容器,结合对select和input元素的值重置与显示控制,实现了完整的表格行增删改功能。
2. deleteRow方法用于删除指定索引的行。
JavaScript表格行动态管理代码实现
以下是实现表格行动态管理的JavaScript代码示例。
var customerInfoMethod = {
// 复制并增加新行
copyrow: function(obj, id) {
{
var rowIndex = obj.parentNode.parentNode.rowIndex;
var resrow = document.getElementById(id);
rowIndex--;
var newRow = resrow.cloneNode(true); // document.createElement("tr");
var parent = resrow.parentNode;
if (parent.lastChild == resrow) {
// 如果目标元素是父节点的最后一个子元素,则直接追加新元素
parent.appendChild(newRow);
} else {
// 如果不是,则插入到目标元素的下一个兄弟节点之前
parent.insertBefore(newRow, resrow.nextSibling);
}
// newRow.innerHTML=resrow.innerHTML;
var selectObj = newRow.getElementsByTagName("select");
for (var a = 0; a < selectObj.length; a++) {
selectObj[a].options[0].selected = true;
}
var inputObj = newRow.getElementsByTagName("input");
inputObj[0].style.display = "";
inputObj[1].style.display = "none";
},
// 复制并增加行的更新逻辑
copyrowUpdate: function(obj, id) {
{
var rowIndex = obj.parentNode.parentNode.rowIndex;
var resrow = document.getElementById(id);
rowIndex--;
var newRow = resrow.cloneNode(true); // document.createElement("tr");
var parent = resrow.parentNode;
if (parent.lastChild == resrow) {
// 如果目标元素是父节点的最后一个子元素,则直接追加新元素
parent.appendChild(newRow);
} else {
// 如果不是,则插入到目标元素的下一个兄弟节点之前
parent.insertBefore(newRow, resrow.nextSibling);
}
// newRow.innerHTML=resrow.innerHTML;
var selectObj = newRow.getElementsByTagName("select");
for (var a = 0; a < selectObj.length; a++) {
selectObj[a].options[0].selected = true;
}
var inputObj = newRow.getElementsByTagName("input");
for (var i = 0; i < inputObj.length - 2; i++) {
inputObj[i].value = "0";
}
inputObj[inputObj.length - 2].style.display = "";
inputObj[inputObj.length - 1].style.display = "none";
},
// 删除指定行
deleteRow: function(rootId, obj) {
var rootTable = $(rootId);
rootTable.deleteRow(obj.parentNode.parentNode.rowIndex);
}
}
/**
增加行 fanjf
*/
function addRow(tableId, trId) {
var tableObj = document.getElementById(tableId);
var trObj = document.getElementById(trId);
//var trIndex = trObj.rowIndex+1;
var rows = tableObj.rows.length;
var cell = "";
var tr = tableObj.insertRow(rows);
for(i=0;i<trObj.cells.length;i++){
cell= tableObj.rows(rows).insertCell(i);
cell.innerText= trObj.cells(i).innerText;
cell.className= trObj.cells(i).className;
cell.innerHTML= trObj.cells(i).innerHTML;
}
}
/**
删除行 fanjf
*/
function deleteRow(tableId, trId) {
var tableObj = document.getElementById(tableId);
var trObj = document.getElementById(trId);
//var trIndex = trObj.rowIndex;//复制tr的行号
var rows = tableObj.rows.length;
if(rows>0){
tableObj.deleteRow(rows-1);
}else{
alert("无可删除的卡号信息!");
}
}作者最新文章
JavaScript将图片转换为Base64编码的两种途径
2026-11-05 16:43:05
怎么在 Vue 或 React 项目中正确集成 animate.js
2026-11-05 10:23:38
JS注册事件:addEventListener基础语法与参数详解
2026-11-05 08:44:56
JSP和JS的区别:运行环境与服务端/客户端职责解析
2026-11-04 23:34:36
pdf.js 官方下载地址:GitHub Release 获取预编译包
2026-11-04 23:07:27
