<script language="javascript">
function countnum()
{
  var num=0;
  for(var i=0;i<document.getElementsByName("mycheckbox").length;i++)
  {
    if(document.getElementsByName("mycheckbox")[i].checked==true)
{
  num = num+1
}
  }
  alert(num)
}
</script>
<body>
  <input type="button" name="Submit" value="提交" onClick="countnum()">
  <input type="checkbox" name="mycheckbox" value="checkbox" id="mycheckbox">  <input type="text" name="num">
</body>

解决方案 »

  1.   

    只有一个checkbox的时候只有一个checkbox对象不是数组
      

  2.   

    问题在这句,document.all["mycheckbox"].length
    如果只有一个checkbox则这个的值,则这个对象就成了undifined了
      

  3.   

    在循环前面加上alert(document.all["mycheckbox"].length);可以知道当只有一个checkbox时document.all["mycheckbox"][i]这个数组是不存在的,只能用document.all["mycheckbox"]来表示此checkbox。
    不知道这应不应该算一个小bug。可能处于其他方面的考虑就是这样设计的吧。在循环外加个判断就行了。
      

  4.   

    从csdn上找到答案了function  selectAll()  
    {  
       var  arrObj  =  document.all;  
       for(var  i  =  0;  i  <  arrObj.length;i++)  
       {  
           
          if(typeof  arrObj[i].type  !=  "undefined"  &&  arrObj[i].type=='checkbox')  
          {
               arrObj[i].checked  =true;
          }
        }  
    }