补充:
box= new Array();前没有var 不久默认为全局变量了吗????

解决方案 »

  1.   

    你应该在最外面:
    var box;
    因为默认它的有效区域只在本function
      

  2.   

    box[x]=total[i].value;
    =>
    box[i]=total[i].value;
    <form name=form1>
    <input type=checkbox value=A checked name=R1>
    <input type=checkbox value=B checked name=R1>
    <input type=checkbox value=C checked name=R1>
    <input type=checkbox value=D checked name=R1>
    </form>
    <script language="javascript">
    dit(1);print();
    function dit(x)
    {  var x="R"+x;
      box= new Array();
      var total=eval("document.form1."+x);
      for (var i=0;i<4;i++)
      {
       if(total[i].checked)
         {
          box[i]=total[i].value;
         }
      }
    }function print()
    {
      for (var i=0;i<4;i++)
      {
        document.write(box[i]+"<BR>");
      }
    }
    </script>
      

  3.   

    是不是box还没有初始化你就就调用了函数?
      

  4.   

    我改后的最新程序还是提示错误:<script language="javascript">
    box= new Array();function dit(x)
    {
      var no=x;
      var x="R"+x;
      var total=eval("document.form1."+x);
      for (var i=0;i<4;i++)
      {
       if(total[i].checked)
         {
          box[no]=total[i].value;
          alert(box[no]);
         }
      }
      
    }function print()
    {
      for (var i=0;i<4;i++)
      {
        document.write(box[i]+"<BR>");
      }
    }
    </script>
      

  5.   

    那就是你确定没有给它赋值了.跟定义方式无关了。因为下面的肯定没有问题了.
    <script language="javascript">
    box= new Array();
    function putall(){
       for( var i=0;i<4;i++){
    box[i]=i;   
       }
    }
    function print()
    {
      for (var i=0;i<4;i++)
      {
        document.write(box[i]+"<BR>");
      }
    }
    putall();
    print();
    </script>