解决方案 »

  1. 弱弱的说下我的思路,就是中间的checkbox一个name。上下两个用一个name。当你执行selectAll方法时首先把中间的都选中。然后在循环判断上下的两个是否选择,若没选中则选中。
    或者直接做死。上下两个都多传一个不一样的值。然后你就可以在selectAll内获取到你点的哪个按钮。然后在把另一个也选中就好了。
      

  2. name属性中为什么要[],头一次见,呵呵,也许我太菜了,在selectAll函数中遍历name属性为ids的dom元素,然后循环设置checked属性为cb-select-all-2的checked值即可
      

  3. <script>
    function selectAll(o, na) {
      var els = document.getElementsByName(na);
      for(var i=0; i<els.length; i++) els[i].checked = o.checked;
      els = document.getElementsByTagName('input');
      for(i=0; i<els.length; i++) {
        if(els[i].id && els[i].id == o.id) els[i].checked = o.checked;
      }
    }
    </script>
    <input type="checkbox" id="cb-select-all-2" onclick="selectAll(this, 'ids[]');">
     
    <input type="checkbox" name="ids[]" value="id">
    <input type="checkbox" name="ids[]" value="id">
    <input type="checkbox" name="ids[]" value="id">
     
    <input type="checkbox" id="cb-select-all-2" onclick="selectAll(this, 'ids[]');">但是你违规了,DHTML 约定:id 必须唯一
      

  4. <input type="checkbox" id="cb-select-all-2" onclick="selectAll(this,'ids[]');">
     
    <input type="checkbox" name="ids[]" value="id">
    <input type="checkbox" name="ids[]" value="id">
    <input type="checkbox" name="ids[]" value="id">
     
    <input type="checkbox" id="cb-select-all-2" onclick="selectAll(this,'ids[]');"><script type="text/javascript">
    function selectAll(obj,name){
    var input = document.getElementsByTagName("input");
    for(var i = input.length;i--;){
    if(input[i].id=="cb-select-all-2"){
    input[i].checked = obj.checked;
    }
    }
    }
    </script>
      

  5. 上面都实现了,就不帮你实现了。另外最好遵循DHTML规定,不然每个浏览器支持不一样,解析出来会与你预想的出现偏差的。
      

类似问题 »