在javascript中的表中动态添加/删除行

4 html javascript forms

我想动态地在表中添加/删除行.我有javascript函数来添加和删除行.但是,我想在每一行旁边的删除按钮,以便我可以删除特定的行.

我想只在第一行完全填充时添加一行.

删除行的功能

 function removeRowFromTable()
{
  var tbl = document.getElementById('tblSample');
  var lastRow = tbl.rows.length;
  if (lastRow > 2) tbl.deleteRow(lastRow - 1);
}
Run Code Online (Sandbox Code Playgroud)

添加行的功能:

function addRow(tableID) {

            var table = document.getElementById(tableID);

            var rowCount = table.rows.length;
            var row = table.insertRow(rowCount);

            var cell1 = row.insertCell(0);
            var element1 = document.createElement("input");
            element1.type = "text";
            cell1.appendChild(element1);

            var cell2 = row.insertCell(1);
            var element2 = document.createElement("input");
            element2.type = "text";
            cell2.appendChild(element2);
        }
Run Code Online (Sandbox Code Playgroud)

我的桌子:

<table id="tableId">
<tr><td>Host Name</td><td>Directory</td></tr>
<tr><td><input type="text"/></td><td><input type="text"/></td></tr>
<tr><td><input type="button" value="+" onclick="addRow(tableId)"/></td>
<td><input type="button" value="-" onclick="removeRowFromTable()"/></td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏!提前致谢!!!

Rob*_*obG 7

如果在每行上放置一个删除按钮,则:

<tr>
  <td><input type="button" value="Delete row" onclick="deleteRow(this)">
  <td><input type="text">
  <td><input type="text">
</tr>
Run Code Online (Sandbox Code Playgroud)

而deleteRow函数可以是:

function deleteRow(el) {

  // while there are parents, keep going until reach TR 
  while (el.parentNode && el.tagName.toLowerCase() != 'tr') {
    el = el.parentNode;
  }

  // If el has a parentNode it must be a TR, so delete it
  // Don't delte if only 3 rows left in table
  if (el.parentNode && el.parentNode.rows.length > 3) {
    el.parentNode.removeChild(el);
  }
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果你的所有行都有相同的内容,那么通过克隆现有行来添加行会快得多:

function addRow(tableID) {
  var table = document.getElementById(tableID);

  if (!table) return;

  var newRow = table.rows[1].cloneNode(true);

  // Now get the inputs and modify their names 
  var inputs = newRow.getElementsByTagName('input');

  for (var i=0, iLen=inputs.length; i<iLen; i++) {
    // Update inputs[i]
  }

  // Add the new row to the tBody (required for IE)
  var tBody = table.tBodies[0];
  tBody.insertBefore(newRow, tBody.lastChild);
}
Run Code Online (Sandbox Code Playgroud)