解决方案 »

  1.   

    function isselected() { 
    var ids = document.getElementsByName("chkSon"), selected=false; 
    for (i = 0; i < ids.length; i++) {
    if (ids[i].checked) {
    alert(ids[i].checked + " i:" + ids[i].value);
    selected = true
    }

    if(!selected){
    alert("请选择内容,再操作!")
    }
    }
      

  2.   

    也许循环变量是局部的,而不是全局
    for (var i = 0;
      

  3.   


        function isselected() {
            var ids = document.getElementsByName("chkSon");
            for (i = 0; i < ids.length; i++) {
                if (ids[i].checked) {
                    alert(ids[i].checked + " i:" + ids[i].value);
                    return true;
                }
            }
            alert("请选择内容,再操作!");
            return false;

        }放错位置了吧??
      

  4.   

    感谢回答,不过这和我写的没什么区别呀 只是多了个变量,然后就是把我的返回值给这个变量而已。运行结果还是一样。你的for循环里执行第一次判断后就返回结果,所以实际上for循环只执行了一次。
      

  5.   

    <table>
    <tr>
      <td><input type="checkbox" name="chkSon" value="<%=letter.getId()%>"/></td>
      <td><%=letter.getLetterTitle()%></td>
      <td><%=letter.getMailTypeName()%></td>
      <td><%=letter.getSender()%></td>
      <td><%=letter.getDealName()%></td>
    </tr>
    <tr>
      <td><input type="checkbox" name="chkSon" value="<%=letter.getId()%>"/></td>
      <td><%=letter.getLetterTitle()%></td>
      <td><%=letter.getMailTypeName()%></td>
      <td><%=letter.getSender()%></td>
      <td><%=letter.getDealName()%></td>
    </tr>
    <tr>
      <td><input type="checkbox" name="chkSon" value="<%=letter.getId()%>"/></td>
      <td><%=letter.getLetterTitle()%></td>
      <td><%=letter.getMailTypeName()%></td>
      <td><%=letter.getSender()%></td>
      <td><%=letter.getDealName()%></td>
    </tr>
    </table>
    <input type="button" onclick="isselected()" value="删除" />
    <script>
        function isselected() {
            var ids = document.getElementsByName("chkSon");
            for (i = 0; i < ids.length; i++) {
                if (ids[i].checked) {
                    alert(ids[i].checked + " i:" + ids[i].value);
                    return true;
                }
            }
            alert("请选择内容,再操作!");
            return false;
        }
    </script>没有问题啊。。勾选就不会执行 alert("请选择内容,再操作!");
      

  6.   

    也许你要实现如下的 效果,貌似你的逻辑有点问题<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script>
    window.onload=function(){
    var oBtn=document.getElementById('detech');
    oBtn.onclick=function()
    {
    if(isselected())
    {
    alert('有选择项');
    }
    else
    {
    alert('请选择至少一项!');
    }


    }
    }
    function isselected() { 
                  var ids = document.getElementsByName("chkSon"); 
                  for (var i = 0; i < ids.length; i++) {
                      if (ids[i].checked) {
                          return true;
                      }
                      
                  } 
      return false;
      
              }
      </script>
    </head><body><input type="checkbox" name="chkSon" value="1"/>
    <input type="checkbox" name="chkSon" value="2"/>
    <input type="checkbox" name="chkSon" value="3"/>
    <input type="checkbox" name="chkSon" value="4"/>
    <p>
    <input type="button" value="检测"  id="detech"/>
    </p>
    </body>
    </html>
      

  7.   


    我那个是遍历list 复选框是循环出来的,你这是直接写在页面上,逻辑有一点点的不同。
      

  8.   

      嗯,我那个重点是遍历list,复选框是循环出来. 你试试循环一个list!
      

  9.   


    我那个是遍历list 复选框是循环出来的,你这是直接写在页面上,逻辑有一点点的不同。一样的,最后生成的就是类似的html代码
      

  10.   


    考虑的啊 
    你的for循环里只要有return,遇到选中多个的情况肯定不行
      

  11.   


    考虑的啊 
    你的for循环里只要有return,遇到选中多个的情况肯定不行o哦,那你有什么好方法没!还请不吝赐教!
      

  12.   

    function isselected() { 
      var ids = document.getElementsByName("chkSon"); 
      for (i = 0; i < ids.length; i++) {
        if (ids[i].checked) {
          alert(ids[i].checked + " i:" + ids[i].value);
          return true;
        }
      }
      alert("请选择内容,再操作!");
      return false;
    }
      

  13.   


    考虑的啊 
    你的for循环里只要有return,遇到选中多个的情况肯定不行o哦,那你有什么好方法没!还请不吝赐教!

    看5L  
      

  14.   

    感谢回答,不过这和我写的没什么区别呀 只是多了个变量,然后就是把我的返回值给这个变量而已。运行结果还是一样。你的for循环里执行第一次判断后就返回结果,所以实际上for循环只执行了一次。
     嗯,谢谢,刚刚试了你这个可以。 非常感谢各位的回答!
      

  15.   


    考虑的啊 
    你的for循环里只要有return,遇到选中多个的情况肯定不行o哦,那你有什么好方法没!还请不吝赐教!

    看5L  
    嗯,你说的对,谢谢。
      

  16.   


    不知道楼主到底要实现什么啊 你跑出来的效果跟你代码的逻辑是一样的啊 document.getElementsByName("chkSon");获取到得是你所有的checkbox,你点第一个的时候是因为return true,所以才只弹了一次alert,你直接选择第二个的时候,是因为你第一个的未选中所以才会报下面的,然后你继续return false,所以只弹了一个下面的alert,说说你要实现什么效果吧 我给你写 
      

  17.   

    这个用foreach 更简洁,效率更高。