下面是我写的一个简单的JSP页面代码:
<form name="form">
     <input type="checkbox" name="id" value="">1
     <input type="checkbox" name="id" value="">2
     <input type="checkbox" name="id" value="">3
     <input type="checkbox" name="id" value="">4
     <input type="checkbox" name="chose" value="" onclick="selectAll()">全选
</form>
<script>
     function selectAll()
     {
         for(var i=0;i<document.form.id.length;i++) 
         { 
            if(document.form.chose.checked)
            document.form.id[i].checked=true;
            else
            document.form.id[i].checked=false; 
         }                 
      }
</script>问题: 当名为”id“的复选框只有一个时无法实现全选的功能。因为id是从数据库读出来的,有
可能是只有一个值,但是也有可能是多个。多个时可以实现全选的功能,一个就不行。不知道是
什么原因,不懂解决;请有经验的高手帮忙下。

解决方案 »

  1.   

    <form name="form" ID="Form1">
    <input type="checkbox" name="id" value="" ID="Checkbox1">1 
    <input type="checkbox" name="id" value="" ID="Checkbox2">2
    <input type="checkbox" name="chose" value="" onclick="selectAll()" ID="Checkbox5">allselect
    </form>
    <script>
    function selectAll()
    {
      if(!document.form.id.length){
        if(document.form.chose.checked){
          document.form.id.checked=true;
        }
        else{
          document.form.id.checked=false; 
        }
      }
      else{
        for(var i=0;i<document.form.id.length;i++){ 
          if(document.form.chose.checked){
            document.form.id[i].checked=true;
          }
          else{
            document.form.id[i].checked=false; 
          }
        }
      }              
    }
    </script>
    即可!
      

  2.   

    只有一个的时候就不要用全选好了,因为这时候document.form.id.length是未定义的,会出错,加一个判断,在单个的时候不显示全选:
    <form name="form">
    <input type="checkbox" name="id" value="">1
    <input type="checkbox" name="id" value="">2
    <input type="checkbox" name="id" value="">3
    <input type="checkbox" name="id" value="">4
    <script>
    if(document.form.id.length){
    document.writeln("<input type=\"checkbox\" name=\"chose\" id=\"Check_all\" value=\"\" onclick=\"selectAll()\"><label for=\"Check_all\">Check all</label>");
    }
    </script>
    </form>
    <script>
    function selectAll()
    {
    for(var i=0;i<document.form.id.length;i++)
    {
    if(document.form.chose.checked)
    document.form.id[i].checked=true;
    else
    document.form.id[i].checked=false;
    }
    }
    </script>
      

  3.   

    2种都可以,apollokk() ( )让我知道原因。谢谢你们!