提问者:小点点

JavaScript如何组合getElementsByName和getElementsById(全选复选框)[重复]


我有这样的结构:

<input type=checkbox onclick="toggle(this, 'gr0');">
<input type=checkbox name=id[] id=gr0 value=$id> something1
<input type=checkbox name=id[] id=gr0 value=$id> something1
<input type=checkbox name=id[] id=gr0 value=$id> something1
<input type=checkbox name=id[] id=gr0 value=$id> something1

<input type=checkbox onclick="toggle(this, 'gr1');">
<input type=checkbox name=id[] id=gr1 value=$id> something2
<input type=checkbox name=id[] id=gr1 value=$id> something2
<input type=checkbox name=id[] id=gr1 value=$id> something2
<input type=checkbox name=id[] id=gr1 value=$id> something2

<input type=checkbox onclick="toggle(this, 'gr2');">
<input type=checkbox name=id[] id=gr2 value=$id> something2
<input type=checkbox name=id[] id=gr2 value=$id> something2
<input type=checkbox name=id[] id=gr2 value=$id> something2
<input type=checkbox name=id[] id=gr2 value=$id> something2

当我选中第一行的onclick函数时,它应该选中所有名为id[]和id为'gr0'的复选框(如果我取消选中“master”复选框,则取消选中该复选框,当我取消选中onclick函数中第二个值为'gr1'或'gr2'的第二个/第三个master复选框时也是如此。

我试过了,但不起作用:

<script>
    function toggle(source, id_group) {
        checkboxes = document.getElementsByName('id[]').getElementsById(id_group);
        for(var i=0, n=checkboxes.length;i<n;i++) {
            checkboxes[i].checked = source.checked;
        }
    }
</script>

你能帮帮我吗?


共2个答案

匿名用户

您如何看到,我只是获取ID_group,使用QuerySelector,并使用for,从中选择所有输入并进行检查。

null

function toggle( id_group) {
 var allCB = document.querySelectorAll("input[id='"+id_group+"']");
    for(var i=0; i< allCB.length; i++){
        allCB[i].checked=true;
    }
    }
<input type=checkbox onclick="toggle('gr0');">
<input type=checkbox name=idgr0[] id=gr0 value='01'>
<input type=checkbox name=idgr0[] id=gr0 value='02'> 
<input type=checkbox name=idgr0[] id=gr0 value='03'> 
<input type=checkbox name=idgr0[] id=gr0 value='04'> 
<br>
<input type=checkbox onclick="toggle('gr1');">
<input type=checkbox name=idgr1[] id=gr1 value='05'> 
<input type=checkbox name=idgr1[] id=gr1 value='06'> 
<input type=checkbox name=idgr1[] id=gr1 value='07'> 
<input type=checkbox name=idgr1[] id=gr1 value='08'> 
<br>
<input type=checkbox onclick="toggle('gr2');">
<input type=checkbox name=idgr2[] id=gr2 value='09'> 
<input type=checkbox name=idgr2[] id=gr2 value='10'> 
<input type=checkbox name=idgr2[] id=gr2 value='11'> 
<input type=checkbox name=idgr2[] id=gr2 value='12'>

匿名用户

最后,这是一个极其愚蠢的问题,我是这样处理的:

<script>
    function toggle(source, id_group) {
        checkboxes = document.getElementsByName('id[]');
        for(var i=0, n=checkboxes.length;i<n;i++) {
            if(checkboxes[i].className == id_group) {
                checkboxes[i].checked = source.checked;
            }
        }
    }
</script>


<input type=checkbox onclick="toggle(this, 'gr0');">
<input type=checkbox name=id[] class=gr0 value=$id> something1<br>
<input type=checkbox name=id[] class=gr0 value=$id> something1<br>
<input type=checkbox name=id[] class=gr0 value=$id> something1<br>
<input type=checkbox name=id[] class=gr0 value=$id> something1<br>

<input type=checkbox onclick="toggle(this, 'gr1');">
<input type=checkbox name=id[] class=gr1 value=$id> something2<br>
<input type=checkbox name=id[] class=gr1 value=$id> something2<br>
<input type=checkbox name=id[] class=gr1 value=$id> something2<br>
<input type=checkbox name=id[] class=gr1 value=$id> something2<br>

<input type=checkbox onclick="toggle(this, 'gr2');">
<input type=checkbox name=id[] class=gr2 value=$id> something2<br>
<input type=checkbox name=id[] class=gr2 value=$id> something2<br>
<input type=checkbox name=id[] class=gr2 value=$id> something2<br>
<input type=checkbox name=id[] class=gr2 value=$id> something2<br>

我很抱歉给你带来的不便,但我非常感谢你所做的一切!