添加具有输入值的行

时间:2018-02-08 14:08:23

标签: javascript jquery

我在HTML表格中添加/删除动态行。使用此代码,我可以动态添加和删除行。我想在第一行添加一个带有输入值的行,就像我输入'debasish'一样,它会追加值为'debasish'的下一行。但附加行空白值。 如何使用输入值附加行?

<html>
<head>
<title>Add/Remove dynamic rows in HTML table</title>
<script>
        function addRow(tableID) {
            var table = document.getElementById(tableID);
            var rowCount = table.rows.length;
            var row = table.insertRow(rowCount);
            var colCount = table.rows[0].cells.length;
            for(var i=0; i<colCount; i++) {
                var newcell = row.insertCell(i);
                newcell.innerHTML = table.rows[1].cells[i].innerHTML;
                //alert(newcell.childNodes);
                switch(newcell.childNodes[0].type) {
                    case "text":
                            newcell.childNodes[0].value = "";
                            break;
                    case "checkbox":
                            newcell.childNodes[0].checked = false;
                            break;
                    case "select-one":
                            newcell.childNodes[0].selectedIndex = 0;
                            break;
                }
            }
            clearForm();
        }
        function deleteRow(tableID) {
            try {
            var table = document.getElementById(tableID);
            var rowCount = table.rows.length;

            for(var i=0; i<rowCount; i++) {
                var row = table.rows[i];
                var chkbox = row.cells[0].childNodes[0];
                if(null != chkbox && true == chkbox.checked) {
                    if(rowCount<=1) {
                        alert("Cannot delete all the rows.");
                        break;
                    }
                    table.deleteRow(i);
                    rowCount--;
                    i--;
                }
            }
            }catch(e) {
                alert(e);
            }
        }
    </script>
</head>
<body>
    <form action="#" method="post">
     <input type="button" value="Add Row" onclick="addRow('dataTable')" />
        <input type="button" value="Delete Row"
            onclick="deleteRow('dataTable')" />
        <table id="dataTable" width="550px" border="1">
            <tbody>
            <thead>
              <tr> 
              <th>Select </th>
               <th>Name</th>
               </tr>
            </thead>
            <tr>
                <td><input type="checkbox" name="chk" /></td>
                <td><input type="text"  name="name"></td>
            </tr>
            </tbody>
        </table>
    </form>
</body>
</html>

1 个答案:

答案 0 :(得分:2)

如果您只想从第一行的输入中获取值,请使用以下命令:

 case "text":
    newcell.childNodes[0].value = table.rows[1].cells[1].querySelector("input").value;
    break;

<强>演示

&#13;
&#13;
function addRow(tableID) {
  var table = document.getElementById(tableID);
  var rowCount = table.rows.length;
  var row = table.insertRow(rowCount);
  var colCount = table.rows[0].cells.length;
  for (var i = 0; i < colCount; i++) {
    var newcell = row.insertCell(i);
    newcell.innerHTML = table.rows[1].cells[i].innerHTML;
    //alert(newcell.childNodes);
    switch (newcell.childNodes[0].type) {
      case "text":
        newcell.childNodes[0].value = table.rows[1].cells[1].querySelector("input").value;
        break;
      case "checkbox":
        newcell.childNodes[0].checked = false;
        break;
      case "select-one":
        newcell.childNodes[0].selectedIndex = 0;
        break;
    }
  }
  //clearForm();
}

function deleteRow(tableID) {
  try {
    var table = document.getElementById(tableID);
    var rowCount = table.rows.length;

    for (var i = 0; i < rowCount; i++) {
      var row = table.rows[i];
      var chkbox = row.cells[0].childNodes[0];
      if (null != chkbox && true == chkbox.checked) {
        if (rowCount <= 1) {
          alert("Cannot delete all the rows.");
          break;
        }
        table.deleteRow(i);
        rowCount--;
        i--;
      }
    }
  } catch (e) {
    alert(e);
  }
}
&#13;
<form action="#" method="post">
  <input type="button" value="Add Row" onclick="addRow('dataTable')" />
  <input type="button" value="Delete Row" onclick="deleteRow('dataTable')" />
  <table id="dataTable" width="550px" border="1">
    <tbody>
      <thead>
        <tr>
          <th>Select </th>
          <th>Name</th>
        </tr>
      </thead>
      <tr>
        <td><input type="checkbox" name="chk" /></td>
        <td><input type="text" name="name"></td>
      </tr>
    </tbody>
  </table>
</form>
&#13;
&#13;
&#13;