想得到效果是:当 id="prjdirect" value为"no"时,不选取
<script>
  function checkall(){
   var chk=document.getElementsByTagName("input");
   for(var ii=0;ii<chk.length;ii++){
     //if document.getElementById("prjdirect").value == "yes" //这句不用,可实现反选
      if(chk[ii].type.toLowerCase()=="checkbox")
        chk[ii].checked=!chk[ii].checked;
   }
  }
  </script>
<form action="test8.asp" method="post">
<table width="60%" border="0" cellpadding="0" cellspacing="1" bgcolor="B0C8EA" align="center">
<tr bgcolor="#FFFFFF">
<td align="center"><input type="checkbox" name="upmodproject" value="DE0033"></td>
<td align="left" width="450"><a href="editwlproject.asp?prjname=DE0033">DE0033</a></td>
<td align="center" id="prjdirect">yes</td>
<td align="center">no</td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="center"><input type="checkbox" name="upmodproject" value="DE0037"></td>
<td align="left" width="450"><a href="editwlproject.asp?prjname=DE0037">DE0037</a></td>
<td align="center" id="prjdirect">no</td>
<td align="center">no</td>
</tr>
<p align="left"> <input type="button" value="全部选中" onClick="checkall()"> </p> 
</table>
</form>

解决方案 »

  1.   

    想得到效果是:当 id="prjdirect" value为"no"时,不选取该行中的check
      

  2.   

    按照你的条件在chk[ii].checked=!chk[ii].checked;之前做一个判断就可以了。if(chk[ii].type.toLowerCase()=="checkbox" && (chk[ii].id !='prjdirect' || chk[ii].value != false )
      

  3.   


    HTML不规范,P怎么直接放Table里面
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>    <script type="text/javascript" src="jquery/jquery.js"></script>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>New Document </title>    <script type="text/javascript">        function checkall() {
                var chk = document.getElementById("tb").getElementsByTagName("input");
                for (var ii = 0; ii < chk.length; ii++) {
                    //if document.getElementById("prjdirect").value == "yes" //这句不用,可实现反选                if (chk[ii].type.toLowerCase() == "checkbox")
                        //yes后面有空格换行 之类的,所以用indexOf
                        if (chk[ii].parentNode.parentNode.childNodes[2].innerHTML.indexOf('yes') > -1) {
                        chk[ii].checked = !chk[ii].checked;
                    }
                }
            }
        </script></head>
    <body>
        <p align="left">
            <input type="button" value="全部选中" onclick="checkall()">
        </p>
        <table id='tb' width="60%" border="0" cellpadding="0" cellspacing="1" bgcolor="B0C8EA"
            align="center">
            <tr bgcolor="#FFFFFF">
                <td align="center">
                    <input type="checkbox" name="upmodproject" value="DE0033">
                </td>
                <td align="left" width="450">
                    <a href="editwlproject.asp?prjname=DE0033">DE0033</a>
                </td>
                <td align="center" id="prjdirect">
                    yes
                </td>
                <td align="center">
                    no
                </td>
            </tr>
            <tr bgcolor="#FFFFFF">
                <td align="center">
                    <input type="checkbox" name="upmodproject" value="DE0037">
                </td>
                <td align="left" width="450">
                    <a href="editwlproject.asp?prjname=DE0037">DE0037</a>
                </td>
                <td align="center" id="prjdirect">
                    no
                </td>
                <td align="center">
                    no
                </td>
            </tr>
        </table>
    </body>
    </html>
      

  4.   

    // 用jquery比较简单
    $("input[type='checkbox'][value!='no']").each(function(){
       $(this).attr("checked",!$(this).attr("checked"));
    });
      

  5.   

    能否解释下此句?
     if (chk[ii].parentNode.parentNode.childNodes[2].innerHTML.indexOf('yes') > -1) {
      

  6.   

    <script>
      function checkall()
    {
    var chk = document.getElementsByTagName("input");
    for (var ii = 0; ii < chk.length; ii++)
    {
    // if document.getElementById("prjdirect").value == "yes" //这句不用,可实现反选
    if (chk[ii].type.toLowerCase() == "checkbox")
    {
    if (chk[ii] != 'prjdirect' && chk[ii].value != 'no')
    {
    chk[ii].checked = !chk[ii].checked;
    }
    }
    }
    }
      </script>
      

  7.   

    lz你到底要的是什么效果啊?是只要Id和Value符合条件无论何时都不选取么?
    <script>
      function checkall()
    {
        var chk = document.getElementsByTagName("input");
        for (var ii = 0; ii < chk.length; ii++)
        {
            if (chk[ii].type.toLowerCase() == "checkbox")
            {
                if (chk[ii] != 'prjdirect' && chk[ii].value != 'no')
                {
                    chk[ii].checked = false;
                }
            }
        }
    }
      </script>
      

  8.   

    上边落了个.id
    if (chk[ii].id != 'prjdirect' && chk[ii].value != 'no')不应该有问题啊 那你的选中是选中什么?选中的不是checkbox么
      

  9.   

    首选感谢大家,按照五楼的完全可以实现我要的功能了
    只是不明白这句的意思,
    if (chk[ii].parentNode.parentNode.childNodes[2].innerHTML.indexOf('yes') > -1)
      

  10.   

    效果还是和没加这句if (chk[ii].id != 'prjdirect' &amp;&amp; chk[ii].value != 'no')一样
      

  11.   

    这个是先取下面的那个td,再取td的innerHTML,因为html中有换行 ,所有用indexOf进行比较
      

  12.   

    parentNode 取得父亲节点
    childNodes[2]第二个孩子节点
    indexOf('yes') > -1 是否包含yes