Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 取消选中复选框将取消选中表中的其他复选框_Javascript_Html_Checkbox_Html Table - Fatal编程技术网

Javascript 取消选中复选框将取消选中表中的其他复选框

Javascript 取消选中复选框将取消选中表中的其他复选框,javascript,html,checkbox,html-table,Javascript,Html,Checkbox,Html Table,我在这里使用的是基本的HTML表格,以及输入复选框字段 这就是我想用Javascript实现的目标: 表的第二列有一个复选框。第三列包含第二列的“子选项”。每一行都是独立的 如果取消选中第2列中的复选框,我希望直接取消选中右侧中的所有复选框(第3列中的子选项) 我也想做相反的事;如果选中第一个复选框,它将选中子选项中未选中的所有复选框 伪代码思想: if checkbox checked: uncheck child input's in td `id` 或 如果选中复选框: 取消勾选 取

我在这里使用的是基本的HTML
表格
,以及
输入
复选框字段

这就是我想用Javascript实现的目标:

表的第二列有一个复选框。第三列包含第二列的“子选项”。每一行都是独立的

如果取消选中第2列
中的复选框,我希望直接取消选中右侧
中的所有复选框(第3列中的子选项)

我也想做相反的事;如果选中第一个复选框,它将选中子选项中未选中的所有复选框

伪代码思想:

if checkbox checked:
  uncheck child input's in td `id`

如果选中复选框:
取消勾选
取消选中您可以尝试以下操作:

jQuery

$('#checkall:checkbox').change(function () {
if($(this).attr("checked")) $('input:checkbox').attr('checked','checked');
else $('input:checkbox').removeAttr('checked');
});
纯Javascript解决方案(没有框架被标记)

var table=document.getElementById(“mytable”);
var复选框;

对于(var i=0;我想回答,但我不想给出编码:\n我没有尝试过;我也没有要求代码。我想知道,一般来说,这背后的概念是什么?我的第一个猜测是,我可能需要有匹配的ID或类,只需硬编码彼此相关的选中复选框?有没有更简单的方法这里我可以说,“取消选中
的子项的所有复选框。”?请至少将HTML与表格和复选框一起放入格式良好的表格中,这样可以更容易地回答如何为其编写JavaScript。我已经添加了一些psudo,这两个选项我认为可能有效;对此有任何反馈吗?这与我的要求非常接近。现在,表格上的每一行都会有相同的情况。看起来我st需要添加特定的类或ID,这样一个复选框就不会影响另一行上的任何内容。啊。所以你有,比如说,5个复选框,你想让第四个复选框选中最后四个,而不是第一个?有点。假设这个表有5行,3列。第2列一直向下都有一个“主”复选框。第3列有4个“子选项”与“主”复选框相关但仅在同一行上的复选框。如果选择主复选框,它将取消选中(或选中)所有“子选项”复选框,再次,仅在同一行。好的,另一个人几乎回答了它,哇。谢谢!哈哈谢谢。我必须承认,我更喜欢MrCode的答案。我以前甚至不知道如何在JS中实现它。这就是“漂亮”的定义。
$('#checkall:checkbox').change(function () {
if($(this).attr("checked")) $('input:checkbox').attr('checked','checked');
else $('input:checkbox').removeAttr('checked');
});
var table = document.getElementById("mytable");
var checkbox;

for(var i=0; i<table.rows.length; i++){
    checkbox = table.rows[i].cells[1].getElementsByTagName("input")[0];
    checkbox.onchange = function(){
        var others = this.parentNode.parentNode.cells[2].getElementsByTagName("input");
        for(var j=0; j<others.length; j++){
            others[j].checked = this.checked;
        }
    }
}