Javascript 选中所有复选框

Javascript 选中所有复选框,javascript,html,css,Javascript,Html,Css,我创建的一些JavaScript有一些问题。当“全选”中的某个项目未选中时,需要从“全选”框中删除“已选中”项,并且当“全选”处于选中状态时,我不想仅通过“全选”框查看其他项目 check all, item 1, item 2 移除项目1并检查所有未检查的项目,所有通过的项目都是项目。如果检查全部,则检查项目1和项目2,但未通过 //所有“checkall”复选框都将具有类“checkall” //以及与位置匹配的id,例如威尔士等 $(“.checkall”).on('change',f

我创建的一些JavaScript有一些问题。当“全选”中的某个项目未选中时,需要从“全选”框中删除“已选中”项,并且当“全选”处于选中状态时,我不想仅通过“全选”框查看其他项目

check all, item 1, item 2
移除项目1并检查所有未检查的项目,所有通过的项目都是项目。如果检查全部,则检查项目1和项目2,但未通过

//所有“checkall”复选框都将具有类“checkall”
//以及与位置匹配的id,例如威尔士等
$(“.checkall”).on('change',function(){
//所有普通复选框都将有一个类别“chk_uxxxxxxx”
//其中“xxxx”是位置的名称,例如“chk_wales”
//从“全选”框的id中获取类名
var checkboxesClass='.chk_'+$(this.attr(“id”);
//现在让所有框都选中
var boxesToCheck=$(checkboxesClass);
//勾选所有方框
boxesToCheck.prop('checked',this.checked);
});
//显示用户选择的内容
$(“输入[type='checkbox']”)。更改(函数(){
$(“#选中”).empty();
$(“输入[type='checkbox']:选中”)。每个(函数(){
//查看是否为“全部选中”框
if($(this.attr(“类”)=“checkall”){
//显示“全选”框的id
$(“#已选中”).html($(“#已选中”).html()+''+$(this.attr(“id”).toUpperCase()+);
}否则{
//显示所有普通复选框的标签文本
$(“#选中”).html($(“#选中”).html()+$(this.next().text()+”
); } }); }); //通过进一步的工作,您可以在仅选中一个或两个复选框时使复选框“所有标题”显示出来。这取决于您需要它如何工作。

试验
全部检查
项目1
项目2
项目3

全部检查 项目1 项目2 项目3
全部检查 项目1 项目2 项目3 您已选择:


如果我没有弄错你想说的话,这个代码应该可以用。我已经完成了第一组复选框。您可以在接下来的两个小时内完成:

$(“#检查1输入[type=checkbox]”)。关于(“更改”,函数(){
if($(“#检查1输入[类型=复选框]:选中”).length==$(“#检查1输入[类型=复选框]”).length){
$(“#威尔士”).prop(“选中”,为真);
}
否则{
$(“#威尔士”).prop(“选中”,假);
}
});

全部检查
项目1
项目2
项目3

不确定“通过”是什么意思,但取消选中复选框可以通过以下方式实现:

if (!$currentCheckbox.hasClass('checkall')) {    
    var $previousCheckAll = $currentCheckbox.prevAll('.checkall');        
    if ($previousCheckAll.length>0)
    {
        $previousCheckAll.first().prop('checked',false);    
    }        
}
只需将代码插入行的上方下方

 $("#checked").empty();

您的JSbin。

您能解释清楚吗?好的,它可以工作,但只有当您删除2个项目时,如果您先删除项目3,则不会删除如此接近的项目,当您删除一个项目时,当它们全部选中时,它不会删除选中的全部。。不,当选中时,现在显示所有项目是正确的,但另一种方式是正确的:-),您如何处理多功能项目?您必须使功能动态化。传递id作为参数