百转千回,万物皆变心不动,任清风自流。

html,css,jQuery,javascript,php,mysql,dedecms,phpcms,wordpress,linux,windows
  首页  :: 订阅 订阅  :: 管理

js || jQuery 复选框(checkbox)全选/全不选/反选

Posted on 2012-08-04 16:19  李潇喃  阅读(259)  评论(0)    收藏  举报
<!DOCTYPE html> <html> <head> <title>html5</title> <meta http-equiv="content-Type" content="text/html;charset=utf-8" /> <meta name="keywords" content="" /> <meta name="description" content="" /> <link rel="stylesheet" href="reset.css"> <style type="text/css"> body,dl,dt,dd,p{margin:0;padding:0;} body{font-family:Tahoma;font-size:12px;} label,input,a{vertical-align:middle;} label{padding:0 10px 0 5px;} a{color:#09f;text-decoration:none;} a:hover{color:red;} dl{width:120px;margin:10px auto;padding:10px 5px;border:1px solid #666;border-radius:5px;background:#fafafa;} dt{padding-bottom:10px;border-bottom:1px solid #666;} dt label{font-weight:700;} p{margin-top:10px;} </style> <script type="text/javascript" src="jquery-1.7.1.min.js"></script> <!-- javascript --> <script type="text/javascript"> window.onload = function(){ var oA = document.getElementsByTagName("a")[0]; var oInput = document.getElementsByTagName("input"); var oLabel = document.getElementsByTagName("label")[0]; var isCheckAll = function(){ // 判断是不是全选状态 根据n的值是否与选框数相等判断 for(var i = 1 , n =0; i < oInput.length; i++){ //循环检查input的checked checked为true时n+1 oInput[i].checked && n++ } // 利用运算符的优先级给oInput[0].checked赋值 如果 n == oInput.length - 1为true 否则为false oInput[0].checked = n == oInput.length - 1 ; // 根据oInput[0].checked的值来输出相应文字 oLabel.innerHTML = oInput[0].checked ? "全不选" : "全选"; }; // 全选、全不选 oInput[0].onclick = function(){ for(var i = 1; i < oInput.length; i++){ // 根据oInput[0].checked的值来给所有input赋值 oInput[i].checked = this.checked } // 改变文字 isCheckAll() }; // 反选 oA.onclick = function(){ for(var i = 1; i < oInput.length; i++ ){ // 获取与当前值相反的值 oInput[i].checked = !oInput[i].checked } // 改变文字 isCheckAll() }; // 每改变一个input检查一次checked为true选中的数量 for(var i = 1; i < oInput.length; i++){ oInput[i].onclick = function(){ isCheckAll() } } } </script> <!-- jQuery --> <script type="text/javascript"> // $(function(){ // var oA = $("a:eq(0)"); // var oInput = $("input"); // var oLabel = $("label:eq(0)"); // var isCheckAll = function(){ // for(var i = 1 , n = 0; i < oInput.length; i++){ // $(oInput).eq(i).is(":checked") && n++ // } // if(n == oInput.length - 1){ // $(oInput).eq(0).attr("checked","checked"); // $(oLabel).html("全不选"); // }else{ // $(oInput).eq(0).removeAttr("checked"); // $(oLabel).html("全选"); // } // }; // $(oInput).eq(0).click(function(){ // $(oInput+":gt(0)").attr("checked",this.checked); // isCheckAll(); // }); // $(oA).click(function(){ // for(var i = 1; i < oInput.length; i++){ // if($(oInput).eq(i).is(":checked")){ // $(oInput).eq(i).removeAttr("checked"); // }else{ // $(oInput).eq(i).attr("checked","checked"); // } // } // isCheckAll(); // }); // for(var i = 1; i < oInput.length; i++){ // oInput[i].onclick = function(){ // isCheckAll(); // } // } // }) </script> </head> <body> <dl> <dt><input type="checkbox" id="checkAll" /><label>全选</label><a href="javascript:;">反选</a></dt> <dd> <p><input type="checkbox" name="item" /><label>选项(一)</label></p> <p><input type="checkbox" name="item" /><label>选项(二)</label></p> <p><input type="checkbox" name="item" /><label>选项(三)</label></p> <p><input type="checkbox" name="item" /><label>选项(四)</label></p> <p><input type="checkbox" name="item" /><label>选项(五)</label></p> <p><input type="checkbox" name="item" /><label>选项(六)</label></p> <p><input type="checkbox" name="item" /><label>选项(七)</label></p> <p><input type="checkbox" name="item" /><label>选项(八)</label></p> <p><input type="checkbox" name="item" /><label>选项(九)</label></p> <p><input type="checkbox" name="item" /><label>选项(十)</label></p> </dd> </dl> <center>1、切换全选/全不选文字;2、根据选中个数更新全选框状态;</center> </body> </html>