Javascript-网页编程-DHTML-复选框加强

选择框的应用(类似如邮件管理)

实现功能:类似如邮箱中对邮件的管理:

选择邮件,删除邮件,全选,反选,取消全选等

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <html>  
  2.   <head>  
  3.     <title>DHTML技术演示---checkbox的使用2</title>  
  4.      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5.      <style type="text/css">  
  6.         @import url(table.css)/*这个css样式要自己写一个文件导入进来*/  
  7.      </style>  
  8.      <script type="text/javascript">  
  9.         var name;  
  10.         function trColor(){  
  11.             var oTableNode = document.getElementById("mailTable");  
  12.             var collTrNodes = oTableNode.rows;  
  13.             for(var x=1; x<collTrNodes.length-1;x++){  
  14.                 if(x%2==1){  
  15.                     collTrNodes[x].className="one";  
  16.                 }else{  
  17.                     collTrNodes[x].className="two";  
  18.                 }  
  19.                 collTrNodes[x].οnmοuseοver=function(){  
  20.                     name = this.className;  
  21.                     this.className="over";  
  22.                     /*下面这种注册事件的方式也可以 
  23.                      this.οnmοuseοut=function(){ 
  24.                         this.className=name; 
  25.                      } 
  26.                     */  
  27.                 }  
  28.                   
  29.                 collTrNodes[x].οnmοuseοut=function(){  
  30.                     this.className=name;  
  31.                 }  
  32.                   
  33.             }  
  34.         }  
  35.        
  36.         onload = function(){  
  37.             trColor();  
  38.         }  
  39.           
  40.         function checkAll(aChkboxNode){  
  41.             var collMailNodes = document.getElementsByName("mail");  
  42.             for(var x=0;x<collMailNodes.length;x++){  
  43.                 collMailNodes[x].checked = aChkboxNode.checked;  
  44.             }  
  45.             var collChkboxAllNodes = document.getElementsByName("all");  
  46.             collChkboxAllNodes[0].checked = aChkboxNode.checked;  
  47.             collChkboxAllNodes[1].checked = aChkboxNode.checked;  
  48.         }  
  49.           
  50.         function checkAllByBtn1(flag){  
  51.             var collMailNodes = document.getElementsByName("mail");  
  52.             for(var x=0;x<collMailNodes.length;x++){  
  53.                 collMailNodes[x].checked = flag;  
  54.             }  
  55.             var collChkboxAllNodes = document.getElementsByName("all");  
  56.             collChkboxAllNodes[0].checked = flag;  
  57.             collChkboxAllNodes[1].checked = flag;  
  58.             //取消部分选中时的显示样式  
  59.             collChkboxAllNodes[0].indeterminate=false;  
  60.             collChkboxAllNodes[1].indeterminate=false;  
  61.         }  
  62.         function checkAllByBtn2(){  
  63.             var collMailNodes = document.getElementsByName("mail");  
  64.             var n=0;  
  65.             for(var x=0;x<collMailNodes.length;x++){  
  66.                 collMailNodes[x].checked = !collMailNodes[x].checked;  
  67.                 if( collMailNodes[x].checked ){  
  68.                     n++;  
  69.                 }  
  70.             }  
  71.               
  72.             var collChkboxAllNodes = document.getElementsByName("all");  
  73.             collChkboxAllNodes[0].indeterminate=false;  
  74.             collChkboxAllNodes[1].indeterminate=false;  
  75.             if(n==0){  
  76.                 collChkboxAllNodes[0].checked = false;  
  77.                 collChkboxAllNodes[1].checked = false;  
  78.             }else if(n==collMailNodes.length){  
  79.                 collChkboxAllNodes[0].checked = true;  
  80.                 collChkboxAllNodes[1].checked = true;  
  81.             }else{//部分选中时的显示样式  
  82.                 collChkboxAllNodes[0].indeterminate=true;  
  83.                 collChkboxAllNodes[1].indeterminate=true;  
  84.             }  
  85.         }  
  86.           
  87.           
  88.         //把上面两个函数合在一起  
  89.         function checkAllByBtn(num){  
  90.             var collMailNodes = document.getElementsByName("mail");  
  91.             //取消部分选中时的显示样式  
  92.             var collChkboxAllNodes = document.getElementsByName("all");  
  93.             collChkboxAllNodes[0].indeterminate=false;  
  94.             collChkboxAllNodes[1].indeterminate=false;  
  95.             var n=0;  
  96.             for(var x=0;x<collMailNodes.length;x++){  
  97.                 if(num>1){  
  98.                   collMailNodes[x].checked = !collMailNodes[x].checked;  
  99.                 }else{  
  100.                    collMailNodes[x].checked = num;  
  101.                 }  
  102.                 if(collMailNodes[x].checked){  
  103.                     n++;  
  104.                 }  
  105.             }  
  106.               
  107.             if(n==0){  
  108.                 collChkboxAllNodes[0].checked = false;  
  109.                 collChkboxAllNodes[1].checked = false;  
  110.             }else if(n==collMailNodes.length){  
  111.                 collChkboxAllNodes[0].checked = true;  
  112.                 collChkboxAllNodes[1].checked = true;  
  113.             }else{//部分选中时的显示样式  
  114.                 collChkboxAllNodes[0].indeterminate=true;  
  115.                 collChkboxAllNodes[1].indeterminate=true;  
  116.             }  
  117.               
  118.         }  
  119.           
  120.         function deleteMail(){  
  121.             if(!confirm("你真的要删除所选邮件吗?")){  
  122.                 return;  
  123.             }  
  124.             //获取所有选中的邮件  
  125.             var collMailChkNodes = document.getElementsByName("mail");  
  126.             for(var x=0;x<collMailChkNodes.length;x++){  
  127.                 if(collMailChkNodes[x].checked){//选中,则删除  
  128.                     //先拿到tr对象  
  129.                     var oTrNode = collMailChkNodes[x].parentNode.parentNode;  
  130.                     oTrNode.parentNode.removeChild(oTrNode);  
  131.                     //bug:节点容器中,remove之后,长度会变。  
  132.                     x--;//长度修正--还有一种解决方案是:从后往前删  
  133.                 }  
  134.             }  
  135.             trColor();  
  136.         }  
  137.           
  138.      </script>  
  139.   </head>  
  140.     
  141.   <body>  
  142.     <h2>邮件列表</h2>  
  143.     <table id="mailTable">  
  144.         <tr>  
  145.             <th><input type="checkbox" name="all" οnclick="checkAll(this)"/>全选</th>  
  146.             <th>发件人</th>  <th>邮件标题</th> <th>时间</th>  
  147.         </tr>  
  148.         <tr>  
  149.             <td><input type="checkbox" name="mail" /></td>  
  150.             <td>张三</td>  <td>邮件标题11</td> <td>2016616日</td>  
  151.         </tr>  
  152.         <tr>  
  153.             <td><input type="checkbox" name="mail" /></td>  
  154.             <td>李四</td>  <td>邮件标题22</td> <td>2016615日</td>  
  155.         </tr>  
  156.         <tr>  
  157.             <td><input type="checkbox" name="mail" /></td>  
  158.             <td>张四</td>  <td>邮件标题33</td> <td>2016614日</td>  
  159.         </tr>  
  160.         <tr>  
  161.             <td><input type="checkbox" name="mail" /></td>  
  162.             <td>Jack</td>  <td>邮件标题44</td> <td>2016618日</td>  
  163.         </tr>  
  164.         <tr>  
  165.             <td><input type="checkbox" name="mail" /></td>  
  166.             <td>Rose</td>  <td>邮件标题55</td> <td>2016625日</td>  
  167.         </tr>  
  168.         <tr>  
  169.             <td><input type="checkbox" name="mail" /></td>  
  170.             <td>张六</td>  <td>邮件标题66</td> <td>2016616日</td>  
  171.         </tr>  
  172.         <tr>  
  173.             <td><input type="checkbox" name="all" οnclick="checkAll(this)"/>全选</td>  
  174.             <td colspan="3">   
  175.             <!--  
  176.               <input type="button" value="全选" οnclick="checkAllByBtn1(true)">  
  177.               <input type="button" value="取消全选" οnclick="checkAllByBtn1(false)">  
  178.               <input type="button" value="反选" οnclick="checkAllByBtn2()">  
  179.              -->  
  180.                
  181.               <input type="button" value="全选" οnclick="checkAllByBtn(1)">  
  182.               <input type="button" value="取消全选" οnclick="checkAllByBtn(0)">  
  183.               <input type="button" value="反选" οnclick="checkAllByBtn(2)">  
  184.               <input type="button" value="删除所选邮件" οnclick="deleteMail()">  
  185.             </td>  
  186.         </tr>  
  187.           
  188.     </table>      
  189.   </body>  
  190.     
  191. </html>  



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值