需要javascript帮助取消选中一个复选框取消选中主复选框

需要javascript帮助取消选中一个复选框取消选中主复选框,javascript,Javascript,我有一个表格,它的标题行中有一个复选框。数据通过javascript动态添加到表中。现在选中标题行中的复选框将选中或取消选中所有行的所有复选框。。到目前为止,我一直使用方法“checkUncheck()”,即: <input type="checkbox" id="chkAppId" onclick="checkUncheck()"/> 但是现在,假设表中动态添加了10条记录。我已选中标题中的主复选框。之后,我取消选中其中一个复选框,例如:在第10行,则必须取消选中标题的复选框

我有一个表格,它的标题行中有一个复选框。数据通过javascript动态添加到表中。现在选中标题行中的复选框将选中或取消选中所有行的所有复选框。。到目前为止,我一直使用方法“checkUncheck()”,即:

<input type="checkbox" id="chkAppId" onclick="checkUncheck()"/>

但是现在,假设表中动态添加了10条记录。我已选中标题中的主复选框。之后,我取消选中其中一个复选框,例如:在第10行,则必须取消选中标题的复选框……如果我手动选中所有10行复选框,则必须选中主标题的复选框。这是通常在雅虎、gmail等网站上看到的

一种方法是计算已检查的行数,并将其与总行数进行比较,如果发现相等,则检查主行数;否则,取消选中主选项。但我不知道该在哪里做。。。不行

更新

<html>
<head><title>Checkbox puzzle</title></head>

<body>
    <input type="checkbox" id="chkAppId" onclick="checkUncheck()"/>Main<br/>
    <input type="checkbox" id="chkAppId1" onclick="check()"/>chk1<br/>
    <input type="checkbox" id="chkAppId2" onclick="check()"/>chk2<br/>
    <input type="checkbox" id="chkAppId3" onclick="check()"/>chk3<br/>

  <script type="text/javascript">
    function checkUncheck()
    {
        var totalRows = 4;
        if(document.getElementById("chkAppId").checked){
            checkedAll = true;
        }
        else{
            checkedAll = false;
        }

        for(i = 1; i< totalRows; i++){
            document.getElementById("chkAppId"+i).checked = checkedAll;
        }
    }


    function check()
    {
        var totalRows = 4,count=0;
        for(i = 1; i< totalRows; i++)   {
            if(document.getElementById("chkAppId"+i).checked){
                count= count+1;
            }
        }
        if(count ==totalRows - 1){
            //alert("check Main");
            document.getElementById("chkAppId").checked = true;
        }
        else
        {
            //alert("uncheck Main");
            document.getElementById("chkAppId").checked = false;
        }
    }
  </script>
</body>
</html>

复选框拼图
Main
chk1
chk2
chk3
函数checkUncheck() { var totalRows=4; if(document.getElementById(“chkAppId”).已选中){ checkedAll=true; } 否则{ checkedAll=false; } 对于(i=1;i

这将是一个更简单的版本,可以为其他可能需要实现这些功能的人解释其目的。

当您动态插入复选框时,是否为每个复选框指定了不同的ID


发布您的代码,可能有人可以帮助您。

这里是一个包含“动态”行的自包含示例

<HTML>

<input type="button" value="add row" onclick="add_row()">

<table border id="my_table">
<TR><TH><input type="checkbox" onclick="header_check_click()" id="header_check"></TH><TH>HEADER</TH></TR>
</table>

<FORM name="frm">

<script language="javascript">

var g_check_ids = [];

function header_check_click()
{
    var header_check = document.getElementById("header_check");
    for (var k in g_check_ids)
    {
        var the_check = document.getElementById("check" + g_check_ids[k]);
        the_check.checked = header_check.checked;
    }
}

function fix_header_checkbox()
{   
    var all_checked  = true;

    for (var k in g_check_ids)
    {
        var the_check = document.getElementById("check" + g_check_ids[k]);

        if (!the_check.checked)
        {   all_checked  = false;
        }
    }

    var header_check = document.getElementById("header_check");
    header_check.checked = all_checked;
}

function add_row()
{   
    var tbl = document.getElementById("my_table");
    var cnt = tbl.rows.length;
    var row = tbl.insertRow(cnt);

    var checkCell = row.insertCell(0);
    checkCell.innerHTML = "<input onclick=\"fix_header_checkbox()\" type=\"checkbox\" id=check" + cnt + ">";

    g_check_ids.push(cnt);

    var txtCell = row.insertCell(1);
    txtCell.innerHTML = "Cell " + cnt;
    fix_header_checkbox();
}
add_row();

</script>
</FORM>
</HTML>

标题
var g_check_id=[];
函数标题\u检查\u单击()
{
var header\u check=document.getElementById(“header\u check”);
for(g_check_id中的变量k)
{
var the_check=document.getElementById(“check”+g_check_id[k]);
_check.checked=标题_check.checked;
}
}
函数fix\u头\u复选框()
{   
var all_checked=真;
for(g_check_id中的变量k)
{
var the_check=document.getElementById(“check”+g_check_id[k]);
如果(!_check.checked)
{all_checked=false;
}
}
var header\u check=document.getElementById(“header\u check”);
标题_check.checked=所有_checked;
}
函数add_row()
{   
var tbl=document.getElementById(“我的表格”);
var cnt=tbl.rows.length;
变量行=tbl.insertRow(cnt);
var checkCell=row.insertCell(0);
checkCell.innerHTML=“”;
g_check_id.push(cnt);
var txtCell=row.insertCell(1);
txtCell.innerHTML=“Cell”+cnt;
固定标题复选框();
}
添加_行();

是的,我会…用一个作为记录主键的值附加它。。thanx我完成了…只是innerHtml和swing让它变得混乱…在所有动态添加的记录的复选框上,我只是调用了一个函数,它只计算复选框的总数。如果这等于表的总行数,那么它将选中主chkbox,否则取消选中它。。。