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