js动态添加删除行列

本文介绍了一个简单的网页应用,实现在线表格的动态增删行和列的功能,包括增加行、增加列、删除行、删除列等操作,通过JavaScript实现在网页上交互式地编辑表格数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
   <script type="text/javascript">

       var tbl = document.createElement("table");
       tbl.border = "1";
       tbl.id = "table1";
       var colIndex = 1;
       var rowIndex = 1;
       function addRows() {
           
           var boy = document.getElementsByTagName("body")[0];
           if (getRows() > 0) {
               var tr = document.createElement("tr");
               tr.id = "tr" + rowIndex.toString();
               trTop = document.getElementsByTagName("tr")[0];
               for (var i = 1; i < getCols(); i++) {
                  // debugger;
                   var tdid = trTop.childNodes[i - 1].id;
                   var trid = trTop.id.replace("tr", "");
                   tdid = tdid.replace("td"+trid,"");

                   var td = document.createElement("td");
                   // td.innerHTML = getRows() + 1;
                   td.innerHTML = rowIndex.toString();
                   td.innerHTML += tdid;

                   td.id = "td" + rowIndex + tdid.toString();
                   td.setAttribute("onclick", "ChangeCol(this);");
                   tr.appendChild(td);

               }
                var deltd = document.createElement("td");
                var delbtn = document.createElement("input");
                delbtn.type = "button";
                delbtn.value = "删除";
                delbtn.setAttribute("onclick", "delRow(this);");
                deltd.appendChild(delbtn);
                tr.appendChild(deltd);
              
              
           }
           else {
               var tr = document.createElement("tr");
               tr.id = "tr" + rowIndex.toString();
               var td = document.createElement("td");
               td.innerHTML = rowIndex.toString()+colIndex.toString();
               td.id = "td" + rowIndex.toString() + colIndex.toString();
               td.setAttribute("onclick", "ChangeCol(this);");
               tr.appendChild(td);
               var deltd = document.createElement("td");
               var delbtn = document.createElement("input");
               delbtn.type = "button";
               delbtn.value = "删除";
               delbtn.setAttribute("onclick", "delRow(this);");
               deltd.appendChild(delbtn);
               tr.appendChild(deltd);
           }
           rowIndex++;
           tbl.appendChild(tr);
           boy.appendChild(tbl);
       }
       function addCols() {
           //debugger;
           if (getRows() > 0) {
               colIndex++;
               var trs = document.getElementsByTagName("tr");
               //debugger;
               for (var i = 1; i <= trs.length; i++) {
                   var td = document.createElement("td");
                   //debugger;
                   //td.innerHTML = i;
                   td.innerHTML = trs[i - 1].id.replace("tr", "") + colIndex.toString();
                   td.id = "td" + trs[i - 1].id.replace("tr", "") + colIndex.toString();
                   td.setAttribute("onclick", "ChangeCol(this);");
                   //先删除最后一列
                  
                   var lastCol = document.getElementsByTagName("tr")[i - 1].lastChild;
                 
                   document.getElementsByTagName("tr")[i - 1].removeChild(lastCol);
                   document.getElementsByTagName("tr")[i - 1].appendChild(td);
                   document.getElementsByTagName("tr")[i - 1].appendChild(lastCol);

               }
              
           }
           else {
              
               addRows();
           }
       }
       function getRows() {
           return document.getElementsByTagName("tr").length;
       }
       function getCols() {
           return document.getElementsByTagName("tr")[0].getElementsByTagName("td").length;
       }
       function delRow(o) {
           tbl.removeChild(o.parentNode.parentNode);
       }
       function delCol() {
       var col = document.getElementById("hidColId").value
           if (col != "") {
                //如果有行
               if (getRows() > 0) {
                   var trs = document.getElementsByTagName("tr");
                   if (trs[0].getElementsByTagName("td").length == 2) {

                       for (var i = trs.length-1;i >= 0 ; i--) {
                           document.getElementById("table1").removeChild(trs[0]);

                       }
                   }
                   else {
                       for (var i = 0; i < trs.length; i++) {
                           var tdid = trs[i].id.replace("tr", "td") + col.toString();

                           trs[i].removeChild(document.getElementById(tdid));

                       }
                   }
               }

               document.getElementById("hidColId").value = "";
               document.getElementById("colId").innerHTML = "";

           }
       }
       function ChangeCol(o) {
           var rowcol = o.id.replace("td", "");
           var row = o.parentNode.id.replace("tr","");
           var col = rowcol.substr(row.length);
           document.getElementById("hidColId").value = col;
           document.getElementById("colId").innerHTML = col;
           document.getElementById("btnDelCol").disabled = false;

       }
   </script>
</head>

<body>
<input type="hidden" id="hidColId" /><span id="colId"></span>
<button onclick="addRows()">加行</button><button onclick="addCols()">加列</button><button id="btnDelCol" disabled="disabled" onclick="delCol()">删除列</button>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

感谢一路走过的人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值