document.all["checkbox"].length为空或不是对象

解决方案 »

  1.   

    function dispatch(type)
            {
                var num=0;
                for(var i=0;i<document.all["checkbox"].length;i++)
                {
                    if(document.all["checkbox"][i].checked==true)  <--这里不对
                    {
                        num = num+1
                    }
                }            alert(num)
            }
    应该是if(document.all.checkbox(i).checked){
           num++;
            }
      

  2.   

    你的checkbox的在表单中的名字是叫这个“checkbox”吗?
    如不是将所有document.all.checkbox(i).checked这样写法的这个“checkbox”改为你的checkbox的在表单中的名字
      

  3.   

    <html><body>
    <input type ="checkbox" name ="checkbox">
    <input type ="checkbox" name ="checkbox" ID="Checkbox1">
    <input type ="checkbox" name ="checkbox" ID="Checkbox2">
    <input type ="checkbox" name ="checkbox" ID="Checkbox3"><input type=button value="check" onclick="dispatch()">
    <script>function dispatch()
            {
                var num=0;
                for(var i=0;i<document.all["checkbox"].length;i++)
                {
                    if(document.all["checkbox"][i].checked==true)
                    {
                        num = num+1
                    }
                }            alert(num)
            }
    </script></body>
    </html>
      

  4.   

    function dispatch(type){
    var theObject=document.getElementsByName("youcheckboxname");
    var num=0;
    for (var i=0;i<theObject.length;i++){
        if (theObject.checked){
            num++;
        }
    }
    alert(num);
    }
      

  5.   

    /**
    * This function is to get the number of the checked checkboxes.
    * JK 2003-12-08
    */
    function getCheckedCheckboxesNum(nameOfCheckBox)
    {
    var theNum=0;
    var theCheckboxInputs=document.getElementsByName(nameOfCheckBox);
    for (var i=0;i<theCheckboxInputs.length;i++)
    {
    if(theCheckboxInputs[i].checked) theNum++;
    }
    return theNum;
    }
      

  6.   

    找到答案了http://blog.csdn.net/lizanhong/articles/27644.aspx
    谢谢大家我要根据num的值进行判断,这样为什么不可仪:
    if(b>1) alert ("只能选择一个域!");
    if(b==0) alert("请选择一个域!");
      

  7.   

    var count=0;           var checkIdObj = eval("formDispatch.domainId"); 
               //判断对象是否为空 
               if (checkIdObj == null) 
               { return; } 
               for (i=0; i<checkIdObj.length; i++) 
               { if(checkIdObj[i].checked)
               count++; 
               }
               if(count>1) alert ("只能选择一个域!");
               if(count==0) alert("请选择一个域!");
      

  8.   

    如果只有一个 checkbox,楼上的代码运行情况可能不是想要的
      

  9.   

    另:请注意,
    ;--->> ;
      

  10.   

    JK的方法是对的,因为当只有一个复选项时,document.all["checkbox"]只是一个对象,document.all["checkbox"].length 会报错:对象不存在!
    但 theCheckbox = document.getElementsByName("checkbox");返回的总是一个数组,theCheckBox.length为元素个数。
      

  11.   

    当你的页面只有一个或者零个Checkbox时,document.all["checkbox"]返回的是
    Checkbox对象或者null,所以 .length 是出错。新手都容易遇到这样的问题。使用方法 document.getElementsByName 方法,他返回null 或者数组。
      

  12.   

    var obj = document.all.elements;
    var num = 0;
    for(var i = 0; i < obj.length; i++) {
    if(obj[i].name == "yourcheckboxname" and obj[i].checked == true) {
    num++;
    }
    }
      

  13.   

    更正一个错误:
    var obj = document.all.elements;
    var num = 0;
    for(var i = 0; i < obj.length; i++) {
    if(obj[i].name == "yourcheckboxname" && obj[i].checked == true) {
    num++;
    }
    }
      

  14.   

    http://community.csdn.net/Expert/topic/3577/3577670.xml?temp=.2648279
      

  15.   

    正如JK_10000(JK)所说的那样,如果只有一个 checkbox,楼上的代码运行情况可能不是想要的。只有一个 checkbox时num的值是0,我该怎么改呢?