将4列的checkbox每列取名一样id也取一样,比如说分别叫chk0,chk1,chk2,chk3,
function fnc()
{
      var n=0;//计数器
      var theCheck;
for(var i=0;i<4;i++)
{
theCheck = document.getElementsByName("chk"+i );       
for(var j=1;theCheck.length;j++)
{
  if(theCheck[j].checked)
  {
    n++;
  }
}
if(n==0)
         {
            alert("每列品牌至少要选择一个!!!"); return false;
 }else
 {
 n=0;
                           //return true;
   }
}
         
}
搞定,^_^

解决方案 »

  1.   

    补充:
    for(var j=1;theCheck.length;j++)搞错了,应该从0开始的,正确的如下
    for(var j=0;theCheck.length;j++)
    还有只要每列中的name一样就OK了,id已经无所谓了
      

  2.   

    这些checkbox应该是放在一个table里的吧,
    如果有18行checkbox,table的行数应该等于18+1(或18+2,看你的实际情
      

  3.   

    Sorry,刚才按错了个键。这些checkbox应该是放在一个table里的吧,
    如果有18行checkbox,table的行数应该等于18+1(或18+2,看你的实际情况)
    所以,有多少行checkbox,可以根据这个table有多少行来得到。
    即checkbox行数=table行数-1
                  =tableId.rows.length-1
      

  4.   

    我看你的应用环境是 .net 里的 DataGrid 里的多选框模板列, 所以你可以这样:var mm = new Array(false, false, false, false);  //一个标记序列
    var boxs = document.all.Repeater1.getElementsByTagName("INPUT"); //取得表格里的所有input
    for(var i=0; i<boxs.length; i++)
    {
      if(boxs[i].type=="checkbox" && boxs[i].checked)
      {
        var n = boxs[i].name.substr(boxs[i].name.length - 1); //相当于你的i
        mm[n] = true;
      }
    }for(var i=0; i<mm.length; i++)
    {
      if(!mm[i])
      {
        alert("你的第 "+ i +" 列 checkbox 没有选中!");
      }
    }
      

  5.   

    TO: boneeater(狗狗) , JK_10000(JK)
        在 .net 里的 DataGrid 里的checkbox 的id与name都不会是相同的, 所以 document.getElementsByName() 是行不通的, 至于通过table行数循环取, 取是可以取, 但是会有些小问题, 这种模板列有可能外面会套上一层 <span>, 感觉也不是很好呀.
      

  6.   

    TO: meizz(梅花雪) 
        收到!我没用过.net,我一般都是在websphere环境下开发的,所以不太清楚.net的情况....
      

  7.   

    楼上的GG。JJ。小弟刚学;ASP
    请教这个函数是什么意思 :  MID
      

  8.   

    TO: chenyuanzhong(阿肉) 
        在每个版块的右上角都有一排:
    刷新 | 全文检索 | 搜索 | 提问| 未解决 | 已解决 | 精华区 | FAQ | 专题 | 帮助
        其中有一个"提问" 就可以发贴了.mid 是VBScript里的一个字符串截取函数 mid(str, startIndex, length)