function check_all() {
  var input = document.getElementsByTagName("INPUT");
  for(i=0;i<input.length;i++)
  {
      if(input[i].type == "checkbox" && input[i].checked == false){
           input[i].value="0";
       }
  }
}

解决方案 »

  1.   

    把所有的值初始化为0
    选中的为ok. 这样不会循环。去改。
    <script language="javascript">
    <!--
    function check_box(a) {
      a.value="ok"
      }
    }
    //-->
    </script>
    <form name="form1" method="post" action="" onSubmit="return check_box();">
            <p>
              <input name="p[0]" type="checkbox" onclick="check_box(this);" id="p[0]" value="0">
              <input name="p[1]" type="checkbox" onclick="check_box(this);" id="p[1]" value="0">
              <input name="p[2]" type="checkbox" onclick="check_box(this);" id="p[2]" value="0">
            </p>
            <p>
              <input type="submit" name="Submit" value="Submit">
            </p>
          </form>
      

  2.   

    我同意  ice_berg16(寻梦的稻草人)  的,因为表单初始值是从数据库里读出来的。不能改。 只能改没有被选择的。不过还要感谢两位的热心