以下是本人制作的全选/反选 组件,供广大同行参考、指正:

效果如图:

在实现的过程中,全选和全部取消选中这两个功能较为简单,只需用for循环遍历所有复选框为true或false即可。反选也较为简单,也是用for循环遍历一遍,把复选框的值设为当前状态的反向: obox[i].checked=!obox[i].checked; 。难点在于在全选状态下取消一个复选框,要自动识别为没有全选,随即更新全选状态为false。

<html>
<head>
<meta charset="utf-8">
<style>
body,div{margin: 0;padding: 0}
body{font: 16px/1.5 Tahoma;color: #fff;font-weight:bold;text-align: center;line-height: 28px}
#box{margin-top:100px;}
#box1{height: 320;width: 100px;margin: 0 auto;background: #9c3;border:4px solid #439C3A;border-radius: 6px;}
#box2{width: 100px;height: 300px;margin: 0 auto;}
.checkbox{width: 16px;height: 16px;}
label{font: 20px/1.5 Tahoma;font-weight: bold;line-height: 28px}
#all{width: 20px;height: 20px;}
button{background: #9c3;color: #fff;height: 28px;width: 60px;font:18px/1.5 Tahoma;line-height: 15px;border: 2px solid #439C3A; border-radius: 4px;font-weight:bold;cursor: pointer;}
</style>
</head>
<body>
<div id="box">
<div id="box1">
<label><b>全选</b></label><input type="checkbox" id="all"><br><hr>
<div id="box2">
事项1<input type="checkbox" class="checkbox"><br>
事项2<input type="checkbox" class="checkbox"><br>
事项3<input type="checkbox" class="checkbox"><br>
事项4<input type="checkbox" class="checkbox"><br>
事项5<input type="checkbox" class="checkbox"><br>
事项6<input type="checkbox" class="checkbox"><br>
事项7<input type="checkbox" class="checkbox"><br>
事项8<input type="checkbox" class="checkbox"><br>
<hr>
<button id="but1">反 选</button>
</div>
</div>
</div>
</body>
<script type="text/javascript">
var oall=document.getElementById("all"); //获取“全选/取消”复选框
var obox=document.getElementById("box2").getElementsByTagName("input"); //获取各项复选框
var olabel=document.getElementsByTagName("label")[0]; //获取“label”用来更新显示 全选/取消
var obut=document.getElementById("but1"); //获取反选按钮<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
    obut.onclick=function()               //反选
{
var count=0;
for(var i=0;i<obox.length;i++)
{
obox[i].checked=!obox[i].checked;
if(obox[i].checked)
{
count++;
}
}
oall.checked=count==obox.length?true:false;
olabel.innerHTML=oall.checked ? "取消":"全选";
};
</pre><pre name="code" class="html">
     oall.onclick=function(){                //全选
for(var i=0;i<obox.length;i++){
obox[i].checked=this.checked;
}
olabel.innerHTML=oall.checked ? "取消":"全选";
}; 
</pre><pre name="code" class="html">
        var n;
for(var i=0;i<obox.length;i++) //更新“全选/取消”
{
obox[i].onclick=function(){
n=0;
for(var j=0;j<obox.length;j++)
{
if(obox[j].checked)
{
n++;
}
}
oall.checked=n==obox.length?true:false;
olabel.innerHTML=oall.checked ? "取消":"全选";
};
}
</script>
</html>

用javascript实现全选/反选组件的更多相关文章

  1. 表单javascript checkbox全选 反选 全不选

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  2. JavaScript 实现全选 / 反选功能

    JavaScript 实现全选 / 反选功能 版权声明:未经授权,内容严禁转载! 构建主体界面 编写 HTML 代码 和 CSS 代码,设计主题界面 <style> #user { wid ...

  3. JavaScript、全选反选-课堂笔记

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 用JavaScript实现全选-反选

    实现全选-反选 在日常生活我们会遇到需要全选-反选的地方,其实用JavaScript也能实现. 样式如下所示: 样式代码如下所示: <!DOCTYPE html PUBLIC "-// ...

  5. JavaScript下全选反选的Demo程序里实现checkmeonly函数 DOM

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Android开发 ---基本UI组件5:监听下拉选项,动态绑定下拉选项、全选/反选,取多选按钮的值,长按事件,长按删除,适配器的使用,提示查询数据,activity控制多按钮

    效果图: 效果描述: 1.当点击 1 按钮后,进入选择城市的页面,会监听到你选中的城市名称:动态为Spinner绑定数据 2.当点击 2 按钮后,进入自动查询数据页面,只要输入首字母,就会动态查找以该 ...

  7. javascript总结41:表格全选反选,经典案例详解

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. JavaScript Web API 全选反选案例

    全选反选 全选和反选功能,在开发中可以说是应用得非常多的,以下通过案例分解,学习如何使用JS实现全选反选功能. 该功能可分为如下三大步骤: 1.全选 1.1 获取父checkbox,注册点击事件 1. ...

  9. jQuery全选/反选checkbox

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. 跟随标准与Webkit源码探究DOM -- 获取元素之getElementsByClassName

    按照类名获取元素 -- getElementsByClassName(HTML5) 标准 WHATWG 在Document与Element上均有定义,原型 HTMLCollection getElem ...

  2. Android showing LoadingView or EmptyView for Activity or Fragment

    这几天利用一些时间,整理了一下,写了一个简单的工具类,用来快速的显示LoadingView或者EmptyView,以前都是定义一个layout,根布局为FrameLayout,再在layout布局文件 ...

  3. BZOJ 1093 [ZJOI2007] 最大半连通子图(强联通缩点+DP)

    题目大意 题目是图片形式的,就简要说下题意算了 一个有向图 G=(V, E) 称为半连通的(Semi-Connected),如果满足图中任意两点 u v,存在一条从 u 到 v 的路径或者从 v 到 ...

  4. Python Shell 解释器下使用Django Model

    sys.path.append('E:/Projects/DjangoProjects/myFirstSite') os.environ.setdefault('DJANGO_SETTINGS_MOD ...

  5. mysql安装出现error Nr.1045 (转)

    http://www.cnblogs.com/Ivan-j2ee/archive/2012/09/22/2698278.html 我们在windows下安装mysql时会出现Access denied ...

  6. MyEclipse8.5集成Tomcat7时的启动错误:Exception in thread “main” java.lang.NoClassDefFoundError org/apache/commons/logging/LogFactory

    今天,安装Tomcat7.0.21后,单独用D:\apache-tomcat-7.0.21\bin\startup.bat启动web服务正常.但在MyEclipse8.5中集成配置Tomcat7后,在 ...

  7. [python]pythonic的字典常用操作

    注意:dct代表字典,key代表键值 1.判断字典中某个键是否存在 实现 dct.has_key(key) #False 更Pythonic方法 key in dct #False 2.获取字典中的值 ...

  8. OS X(EI Capitan)常用快捷键整理

    刚上班就配了台RMBP,虽然触摸板确实好用,但是对鼠标的支持太差导致无法使用鼠标,而某些功能用触摸板还是不很方便 于是使用快捷键就势在必行了,参考了苹果官方文档和一些其他资料,整理出常用快捷键清单 准 ...

  9. Week2 Bing词典Android客户端案例分析

    一.软件调研 运行平台:Android 4.4.4 必应版本:5.2.2 1.bug发现 1.1 bug标题:单词挑战无法加载和刷新 bug详细描述:学习界面中的单词挑战模块,点击后没有任何反映,并且 ...

  10. 0525Sprint回顾

    1.回顾组织 主题:“我们下次怎么样才能更加认真对待?” 时间:设定为1至2个小时. 参与者:整个团队. 场所:能够在不受干扰的情况下讨论. 秘书:指定某人当秘书,筹备.记录.整理.  2.回顾流程 ...