复选框的全选和全不选功能(setAttribute方式和.checked方式)

复选框的全选和全不选功能(setAttribute方式和.checked方式)

在网页设计中,复选框是一个经常用到的小组件,也日常会用到全选和全不选功能,在但有一些细节经常会被忽略。如以下案例:

方式一:

<!--html-->
<table id="table">
    <caption>客户信息表</caption>
    <tr>
        <th><input type="checkbox" name="cb"></th>
        <th>编号</th>
        <th>姓名</th>
        <th>性别</th>
        <th>操作</th>
    </tr>
    <tr>
        <td><input type="checkbox" name="cb"></td>
        <td>1</td>
        <td>吴彦祖</td>
        <td></td>
        <td><a href="javascript:void(0)" onclick=fun_del(this)>删除</a></td>
    </tr>
    <tr>
        <td><input type="checkbox" name="cb"></td>
        <td>2</td>
        <td>江疏影</td>
        <td></td>
        <td><a href="javascript:void(0)" onclick=fun_del(this)>删除</a></td>
    </tr>
    <tr>
        <td><input type="checkbox" name="cb"></td>
        <td>3</td>
        <td>戚薇</td>
        <td></td>
        <td><a href="javascript:void(0)" onclick=fun_del(this)>删除</a></td>
    </tr>
</table>
<!--js-->
<script>
//全选功能
var sel_all=document.getElementById("sel_all");
sel_all.onclick=function (){
    //获取checkbox数组
    var cbs=document.getElementsByName("cb");
    //遍历checkbox数组
    for (var i = 0; i < cbs.length; i++) {
        //为每一个checkbox添加属性
       cbs[i].setAttribute("checked","true");
    }
}
//全不选功能
var sel_none=document.getElementById("sel_none");
sel_none.onclick=function (){
    //获取checkbox数组
    var cbs=document.getElementsByName("cb");
    //遍历checkbox数组
    for (var i = 0; i < cbs.length; i++) {
        //为每一个checkbox添加元素
       cbs[i].setAttribute("checked","false");
    }
}
</script>

先通过getElementById获取对应的按钮并为其设置点击事件,本身一组复选框都要设置相同的name,通过name获取元素并生成数组,再遍历数组后为其设置checked属性。这段代码看起来没有什么瑕疵,但在运行后,全选没问题,但全不选就失灵,打断点后发现checked='false’不能生效。查看w3cschool发现**复选框的checked属性值只有checked并没有true或者false,只是浏览器将checked=true解析为checked=checked。**于是作出以下改动:

<!--全不选功能-->
<script>
var sel_none=document.getElementById("sel_none");
sel_none.onclick=function (){
    	//获取checkbox数组
    var cbs=document.getElementsByName("cb");
    	//遍历checkbox数组
    for (var i = 0; i < cbs.length; i++) {
    	//为每一个checkbox添加属性
        cbs[i].removeAttribute("checked");
   }
}
</script>

方式二:

<script>
//全选功能
var sel_all=document.getElementById("sel_all");
sel_all.onclick=function (){
    //获取checkbox数组
    var cbs=document.getElementsByName("cb");
    //遍历checkbox数组
    for (var i = 0; i < cbs.length; i++) {
        //为每一个checkbox添加属性
        cbs[i].checked=true;
    }
}
//全不选功能
var sel_none=document.getElementById("sel_none");
sel_none.onclick=function (){
    //获取checkbox数组
    var cbs=document.getElementsByName("cb");
    //遍历checkbox数组
    for (var i = 0; i < cbs.length; i++) {
        //为每一个checkbox添加属性
        cbs[i].checked=false;
    }
}
</script>

这种方式更加简单直接,通过name.属性值=“…”来直接设置。但这里的属性值要用true和false来设置。

注:两种方式不能混淆!!!使用setAttribute不能用false(也不建议用true),但name.属性值=“…”不能用checked!!

如果是单次改动建议使用setAttribute方法,像复选框这种改动建议使用name.属性值=“…”方法。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值