javascript - 选中/取消选中表格中的所有复选框

标签 javascript html dom

我有一张包含信息的表格。表格的第一列有复选框。 我可以通过选中复选框来使用按钮添加/删除行。我现在遇到的问题是如何使用标题上的复选框选择或取消选择所有复选框。

这是我的代码:

<HTML>
  <HEAD>
    <TITLE> Add/Remove dynamic rows in HTML table </TITLE>
    <SCRIPT language="javascript">
      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 = "checkbox";
        element1.name="chkbox[]";
        cell1.appendChild(element1);

        var cell2 = row.insertCell(1);
        cell2.innerHTML = rowCount;

        var cell3 = row.insertCell(2);
        cell3.innerHTML = rowCount;

        var cell4 = row.insertCell(3);
        cell4.innerHTML = rowCount;

        var cell5 = row.insertCell(4);
        cell5.innerHTML = rowCount;

        var cell6 = row.insertCell(5);
        cell6.innerHTML = rowCount;
      }

      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[0].childNodes[0];
            if(null != chkbox && true == chkbox.checked) {
                table.deleteRow(i);
                rowCount--;
                i--;
            }
        }
        }catch(e) {
            alert(e);
        }
      }

      function checkAll(formname, checktoggle)
      {
        var checkboxes = new Array();
        checkboxes = document[formname].getElementsByTagName('input');

        for (var i=0; i<checkboxes.length; i++)  {
            if (checkboxes[i].type == 'checkbox')   {
            checkboxes[i].checked = checktoggle;
            }
        }
      }

    </SCRIPT>
  </HEAD>
  <BODY>

    <INPUT type="button" value="Add Row" onclick="addRow('dataTable')" />

    <INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable')" />

    <TABLE id="dataTable" border="1">
      <tr>
        <th><INPUT type="checkbox" name="chk[]"/></th>
        <th>Make</th>
        <th>Model</th>
        <th>Description</th>
        <th>Start Year</th>
        <th>End Year</th>
      </tr>
    </TABLE>
  </BODY>
</HTML>

最佳答案

实际上你的 checkAll(..) 没有任何附件就挂了。

1) 添加onchange事件处理器

<th><INPUT type="checkbox" onchange="checkAll(this)" name="chk[]" /> </th>

2) 修改代码处理勾选/取消勾选

 function checkAll(ele) {
     var checkboxes = document.getElementsByTagName('input');
     if (ele.checked) {
         for (var i = 0; i < checkboxes.length; i++) {
             if (checkboxes[i].type == 'checkbox') {
                 checkboxes[i].checked = true;
             }
         }
     } else {
         for (var i = 0; i < checkboxes.length; i++) {
             console.log(i)
             if (checkboxes[i].type == 'checkbox') {
                 checkboxes[i].checked = false;
             }
         }
     }
 }

Updated Fiddle

关于javascript - 选中/取消选中表格中的所有复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19282219/

相关文章:

javascript - 如何使用 Bootstrap 重置弹出模式的位置?

c# - 刷新下拉列表但保留旧的选定值 JSON

html - 带有图像的 Flexbox 网格 - 保持纵横比/比例

javascript - Bootbox 将 DIV 标签移到表外

javascript - 为什么我的图像预加载方法有效?

javascript - 将元素粘贴到浏览器窗口/容器的底部

html - Bootstrap 表单组对齐

html - float : right in css is not working

javascript - 使用 JavaScript 导航复杂/臃肿的 DOM 结构

将 HTML 字符串解析为 DOM 的 Javascript 函数?