为什么第一个复选框工作,而第二个不工作

Why is the first checkbox working but not the second?

本文关键字:工作 第二个 复选框 为什么 第一个      更新时间:2023-09-26

为什么第一个复选框工作,但不是第二个,我做错了什么?: S

 <meta http-equiv="Content-type" value="text/html; charset=UTF-8" />
 <script type="text/javascript" language="javascript">
 function SetAllCheckBoxes(FormName, AreaID)
 {
 if(!document.forms[FormName])
 return;
 var objCheckBoxes = document.getElementById(AreaID).getElementsByTagName('input');
 if(!objCheckBoxes)
 return;
 var countCheckBoxes = objCheckBoxes.length;
 if(!countCheckBoxes)
 objCheckBoxes.checked = CheckValue;
 else
 for(var i = 0; i < countCheckBoxes; i++)
 objCheckBoxes[i].checked = false;
 }
 </script>

 </head>
 <div id="items">
  <input name="checkall" type="checkbox" onclick="SetAllCheckBoxes('SelectedItems','items');"><br>
 <form name="SelectedItems" action="" method="post">
 <b>Select/Unselect All</b><br>

 <input id="idGSSmodules" type="checkbox" name="GSS" >
 <label for="idmodules">GSS</label><br>
 <input type="checkbox" name="GTS" id="idGSSmodules">
 <label for="idmodules">GSS</label>
 <br>
 </div>
 <div id="itemss">
  <input name="checkall" type="checkbox" onclick="SetAllCheckBoxes('SelectedItemss','itemss');"><br>
 <form name="SelectedItemss" action="" method="post">
 <b>Select/Unselect All</b><br>

 <input id="idGSSmodules" type="checkbox" name="GSS" >
 <label for="idmodules">GSS</label><br>
 <input type="checkbox" name="GTS" id="idGSSmodules">
 <label for="idmodules">GSS</label>
 <br>
 </div>
 </form>
 </body>
 </html>

编辑* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

如何在表单上调用方法SetAllCheckBoxes(FormName, AreaID);换句话说,我想调用函数而不使用复选框?

试过了,但是我不能改变复选框

的值
 function unCheckBoxes(FormName, AreaID) {
     if(!document.forms[FormName])
     return;
     var objCheckBoxes = document.getElementById(AreaID).getElementsByTagName('input');
     if(!objCheckBoxes)
     return;
     var countCheckBoxes = objCheckBoxes.length;
     for(var i = 0; i < countCheckBoxes; i++)
     objCheckBoxes[i].checked = false;
 }
 function checkCheckBoxes(FormName, AreaID){
     if(!document.forms[FormName])
     return;
     var objCheckBoxes = document.getElementById(AreaID).getElementsByTagName('input');
     if(!objCheckBoxes)
     return;
     var countCheckBoxes = objCheckBoxes.length;

     for(var i = 0; i < countCheckBoxes; i++)
     objCheckBoxes[i].checked = true;
 }
checkCheckBoxes('locForm','locCheckboxes');

输入元素的复选框只具有checked属性,使用此属性,页面上的所有复选框将被设置为与单击的复选框相同的值。

function setAllOtherCheckboxes(checkAllbox)
{
    var objCheckBoxes = document.getElementsByTagName('input');
    var chkBox = 0;
    for (chkBox in objCheckBoxes)
    {
        objCheckBoxes[chkBox].checked = checkAllbox.checked;            
    }       
}     

和在你的代码中:

<input type="checkbox" name="All" value="on"" onclick="setAllOtherCheckboxes(this);">Alles<br>

您的两个复选框具有相同的id,这是真正的唯一标识符(不是name)。浏览器拒绝识别具有相同id的两个对象。

把你的代码改成:

<input id="GSS" type="checkbox" name="GSS">
<label for="GSS">GSS</label><br/>
<input type="checkbox" name="GTS" id="GTS">
<label for="GTS">GSS</label> 

EDIT:您还需要将第二组复选框重命名为唯一名称。id不能重复