使用复选框删除一组名称

时间:2018-07-10 09:30:48

标签: javascript css html5

我有一个问题,如果我选中了所有复选框,它只会删除底部的复选框,而不是全部。有帮助吗?

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

    for (var i = 1; i < rowCount; i++) {
      var row = table.rows[i];
      var chkbox = row.cells[9].childNodes[0];
      if (null != chkbox && true == chkbox.checked) {
        var name = table.rows[i].cells[i].innerHTML;
        document.forms[0].action = "A.do?event=delete&name=" + name;
        table.deleteRow(i);
        rowCount--;
        i--;
      }
      document.forms[0].submit();
    }
  } catch (e) {
    alert("No item selected for deletion");
  }

}
<td><input type="button" class="btnNormal" value="Delete" onclick="deleteRow('dataTable')"></td>
<td><input type="checkbox" name="chk[]" id="box"></td>

1 个答案:

答案 0 :(得分:0)

替换您的功能

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

      for(var i=rowCount; i>=0; i--) {
      var row = table.rows[i];
      var chkbox = row.cells[9].childNodes[0];
      if(null != chkbox && true == chkbox.checked) {
          var name = table.rows[i].cells[i].innerHTML;
          document.forms[0].action="A.do?event=delete&name="+name;
          table.deleteRow(i);
        }
      }
      document.forms[0].submit();
     }catch(e) {alert("No item selected for deletion");}
}

记住:

  1. 从数组中删除项目时。总是开始for循环 以降序排列。因为如果以增加的订单索引开始 每次删除后都会更改。

  2. 为什么要在for循环内提交表单。我认为这是错误的。在For Loop完成后提交。