我们经常会在网站上遇到一些多选的情况,下面我就来说说使用Dom写全选反选的思路。

全选思路:
首先,我们来分析一下知道,当我们点击"全选"复选框的时候,所有的复选框应该都被选中,那我们就可以给"全选"复选框注册一个事件,就是如果全选按钮被选中的话,那么其他所有复选框都被选中;然后就是其他复选框部分选中或全不选中,那么"全选"复选框不选中。

反选思路:
我们知道,当我们点击反选按钮,那么就把除"全选"之外的所有复选框的选中状态取反(之前选中的为不选中,之前不选中的为选中),在根据这些复选框的选中状态来判断"全选"是否选中。

<html>
<head>
<title></title>
<script type="text/javascript">
function f1(){
var gender=document.getElementsByName("sex");
for(var i=;i<gender.length;i++){
if(gender[i].checked){
alert(gender[i].value);
break;
}
}
} function checkAll(){
var checkAll=document.getElementById("checkAll");
var checkboxs=document.getElementsByTagName("input");
for(var i=;i<checkboxs.length;i++){
if(checkboxs[i].type=="checkbox"&&checkboxs[i].id!="checkAll"){
checkboxs[i].checked=checkAll.checked;
}
}
} window.onload=function(){
var checkboxs=document.getElementsByTagName("input");
for(var i=;i<checkboxs.length;i++){
if(checkboxs[i].type=="checkbox"&&checkboxs[i].id!="checkAll"){
//给子checkbox动态注册事件
checkboxs[i].onclick=function(){
//定义一个变量记录"全选"checkbox的选中状态,默认为选中
var isCheckAll=true;
for(var j=;j<checkboxs.length;j++){
//过滤出不是checkbox和全选的控件
if(checkboxs[j].type=="checkbox"&&checkboxs[j].id!="checkAll"){
//判断子checkbox控件是否选中
if(!checkboxs[j].checked){
//只要有一个checkbox控件没有选中,那么全选checkbox就不选中
isCheckAll=false;
}
}
}
document.getElementById("checkAll").checked=isCheckAll;
}
}
}
} function reCheck(){
var checkboxs=document.getElementsByTagName("input");
for(var i=;i<checkboxs.length;i++){
if(checkboxs[i].type=="checkbox"&&checkboxs[i].id!="checkAll"){
checkboxs[i].checked=!checkboxs[i].checked;
}
} var isCheckAll=true;
for(var i=;i<checkboxs.length;i++){
if(checkboxs[i].type=="checkbox"&&checkboxs[i].id!="checkAll"){
if(!checkboxs[i].checked){
isCheckAll=false;
}
}
}
document.getElementById("checkAll").checked=isCheckAll;
} </script>
</head>
<body>
<input type="radio" value="nan" name="sex"/>男
<input type="radio" value="nv" name="sex"/>女<br/>
<input type="button" value="性别" onclick="f1()"/><br/> <input id="checkAll" type="checkbox" onclick="checkAll()"/>全选<br/>
<input id="check1" type="checkbox" value="chifan"/>吃饭<br/>
<input id="check2" type="checkbox" value="shuijiao"/>睡觉<br/>
<input id="check3" type="checkbox" value="dadoudou"/>打豆豆<br/>
<input id="reCheck" type="button" value="反选" onclick="reCheck()"/><br/>
</body>
</html>

最新文章

  1. databtables 设置(显示)行号
  2. node基础11:接受参数
  3. PoEdu- C++阶段班【Po学校】-Lesson03_构造函数精讲 - 第5天
  4. Spark程序使用groupByKey后数据存入HBase出现重复的现象
  5. Intel Visual Fortran Compiler 11调用lapack库实现并行多处理计算
  6. HDU 2897 (博弈 找规律) 邂逅明下
  7. MyBatis学习练习
  8. SQL创建登陆用户和赋予权限
  9. 跟我开发NSP(网上查询平台):如何选择开发项目
  10. 找工作笔试面试那些事儿(8)---常问的CC++基础题
  11. 《JS权威指南学习总结--6.8对象的三个属性》
  12. Sublime Text3 常用快捷键动画演示及优秀插件分享
  13. 泛微关于js设计的一些小技巧
  14. requests库下载图片的方法
  15. YOLO学习
  16. css3之border-radius理解
  17. ffmpeg 图像转视频 视频转图像
  18. 一类n阶微分方程转1阶微分方程组
  19. ASP.NET Web API 跨域访问(CORS)要注意的地方
  20. 【Java 笔记】 java 格式化输出

热门文章

  1. 封装一个MongoDB的 asp.net 链接类
  2. HDU-1036 Average is not Fast Enough!
  3. 关注LoadRunner脚本回放日志中的Warning信息-转载
  4. 【HTML】Beginner5:List
  5. WebView相关设置
  6. android实现图片平铺效果&WebView多点触控实现缩放
  7. LINUX系统怎么关闭防火墙?
  8. 【Java基础】Java多线程小结
  9. HDU5627--Clarke and MST (bfs+位运算)
  10. oracle中使用sql查询时字段为空则赋值默认