<HTML>
<HEAD>
<TITLE></TITLE>
<SCRIPT LANGUAGE=javascript>
function window.onload(){
  init()
}function init(){
  var chks=document.all.chk
    for(var i=0;i<chks.length;i++)
      chks[i].onclick=validate
}
function validate(){
  
  var sCur=this.parentElement.previousSibling.outerText
  var chks=document.all.chk
     if (this.checked){
        for(var i=0;i<chks.length;i++){
          if (chks[i].checked==true){
             sSel=chks[i].parentElement.previousSibling.outerText
             if (sCur!=sSel){
               alert("请选择相同的单位")
               this.checked=false
               break
             }
          }
        }
     }
}
</SCRIPT></HEAD>
<BODY><table>
  <tr>
    <th>单位</th><th></th>
  </tr>
  <tr>
    <td>A</td><td id=td0><input type=checkbox id=chk></td>
  </tr>
  <tr>
    <td>B</td><td><input type=checkbox id=chk></td>
  </tr>
  <tr>
    <td>B</td><td><input type=checkbox id=chk></td>
  </tr>
  <tr>
    <td>A</td><td><input type=checkbox id=chk></td>
  </tr>
</table></BODY>
</HTML>

解决方案 »

  1.   

    <table id=demo>
    <tr><td>日期 <td>单位<td>付款
    <tr><td>2002-05-09<td>A<td><input type=checkbox>
    <tr><td>2002-05-10<td>B<td><input type=checkbox>
    <tr><td>2002-05-11<td>A<td><input type=checkbox>
    </table>
    <script>
    var p="",c=0;
    function demo.onclick(){
    var obj=event.srcElement;
    if(obj.type!="checkbox")return;
    var objs=demo.all.tags("input")
    for(i=0;i<objs.length;i++)
    if(objs[i].type=="checkbox"&&objs[i].checked==true){
    if(objs[i].parentElement.previousSibling.innerText!=obj.parentElement.previousSibling.innerText){alert("error");return false;}
    }
    return true;
    }
    </script>
      

  2.   

    <script>
    function doselect(para){
    chku = eval("document.all.u"+para+".innerText") ;
    chkObj = document.all.chk ;
    chkLen = chkObj.length ;
    for (i=0;i<chkLen;i++){
    if (chkObj[i].checked){
    oldChk = eval("document.all.u"+i+".innerText") ;
    if (chku != oldChk){
    alert("您选择的不是一个单位的数据,不能同时付款!") ;
    eval("document.all.chk["+para+"].checked  = false") ;
    return ;
    }
    }
    }
    }
    </script>
    <BODY BGCOLOR="#FFFFFF">
    <table border="1" id="tab1">
    <tr><td>日期</td><td>单位</td><td>付款</td></tr>
    <tr><td>2002-05-09</td><td id="u0">A</td><td><input type="checkbox" name="chk" onclick="doselect('0');"></td></tr>
    <tr><td>2002-05-10</td><td id="u1">B</td><td><input type="checkbox" name="chk" onclick="doselect('1');"></td></tr>
    <tr><td>2002-05-11</td><td id="u2">A</td><td><input type="checkbox" name="chk" onclick="doselect('2');"></td></tr></BODY>
      

  3.   

    objs[i].parentElement.previousSibling.innerText在这里等于objs[i].parentElement.parentElement.children[objs[i].parentElement.cellIndex-1].innerText
      

  4.   

    谢谢各位帮忙,qiushuiwuhen(秋水无恨) 的我不能运行网页上有错误。
    我还想请教一个问题。sunbeamy(阳光灿烂的深夜) 和Andrawu(Andrawu) 我都试了,都可以实现。但我想问一个如果chk的名字不能该如何获得object啊?!
      

  5.   

    谢谢各位帮忙,qiushuiwuhen(秋水无恨)  的我不能运行,网页上有错误。  
     
    我还想请教一个问题。sunbeamy(阳光灿烂的深夜)  和Andrawu(Andrawu)  的程序我都试了,都可以实现。但我想问一下如果chk的名字不同(box1,box2……boxn)该如何获得object啊?!
      

  6.   

    有什么错?我运行了没问题不能运行还是我的alert("error")?
      

  7.   

    qiushuiwuhen(秋水无恨) 的没有错,可以达到你的要求。
      

  8.   

    qiushuiwuhen(秋水无恨)的我也试验过,也是正确的
    ----------------------------------------------------------
    另外我这里只是为了书写方便,如果你的chk的名字不同可以采用秋水无痕的方法,也可以用其他的方法如果名字是像你的例子一样有规律可寻,并且知道最大的个数那么可以用下面的方法来得到object
    var chks=new Array()  
    for (var i=0;i<n;i++)
      chks[i]=document.getElementByName("box"+i)
      或chks[i]=document.getElementById("box"+i)
      或直接用chks[i]=eval("box"+i)
      

  9.   

    Using the DHTML Object Model: var aDivs = document.body.all.tags("INPUT");
    Using the DOM: var aDivs = document.body.getElementsByTagName("INPUT");
      

  10.   

    document.body.all.tags("INPUT");
    然后用type判断是否是checkbox有可能卷入无关的checkbox发生事件
    建议和name或id一起用
    用上面你的方法,然后调demo.all.tags("input")可能好些....
      

  11.   

    qiushuiwuhen(秋水无恨) 真不好意思,那天我试了网页上说缺少对象,可今天看了各位高手的留言,我又试了一次,开始还不正常,但没有出错,后来可以执行了,可能是我的IE有问题,在这里说声抱歉,希望各位高手今后多多帮忙!