zoukankan      html  css  js  c++  java
  • JavaScript 表单全选

    今天学到了一个有趣的例子,在一个表单里,左边都是选框,若点击第一个全选的框,下面所有框会自动选中,若取消其中一个,全选框也会显示为选中状态。反之若选中所有非全选的框,全选框也会自动选中。先通过一个GIF图了解下相关效果。

    HTML结构与css样式就不细说了,直接上代码

    HTML结构

    用table书写,

        <div class="warp">
            <table>
                <thead>
                    <tr>
                        <th>
                            <input type="checkbox" id="AllSelect" >
                            <!-- <input type="checkbox" id="AllSelect" checked="checked"> checked="checked"  显示勾选状况 -->
                        </th>
                        <th>商品</th>
                        <th>价钱</th>
                    </tr>
                </thead>
                <tbody id="tb">
                    <tr>
                        <td>
                            <input type="checkbox">
                        </td>
                        <td>iphone 8</td>
                        <td>8000</td>
                    </tr>
                    <tr>
                        <td>
                            <input type="checkbox">
                        </td>
                        <td>iphone </td>
                        <td>5000</td>
                    </tr>
                    <tr>
                        <td>
                            <input type="checkbox">
                        </td>
                        <td>iphone 7</td>
                        <td>4000</td>
                        </tr>
                    <tr>
                        <td>
                            <input type="checkbox">
                        </td>
                        <td>iphone 2</td>
                        <td>000</td>
                    </tr>
                </tbody>
            </table>
        </div>

    CSS

        <style>
            .warp{
                text-align: center;
                position: relative;
            }
        table{
            
            width: 200px;
            position: absolute;
            border-collapse: collapse;
            top: 100px;
            left: 400px;
            
        }
        table td,table th{
            border: 1px solid blue;
            color: #666666;
            height: 30px
            
        }
        table thead th{
            background-color: pink;
            width: 100px
        }
       /* 鼠标移入样式*/
        .bg{
            background-color: yellowgreen
        }
        </style>

    样式与结构都分享完了,下面说说交互方面的。

    1.首先是惯例的获取元素。有三种方式,如:

    document.querySelector('e');单个元素,括号里可以是"#id,.class,tagName";

    document.getElementById("id");document.getElementsByClassName("class")[0];document.getElementsByTagName("div");

    jqueryx写法:$(“css选择器”)。

    下面说下本次例子的元素获取

            var AllSelect=document.getElementById('AllSelect');
            var tb=document.getElementById('tb').getElementsByTagName('input');
            var trs=document.querySelector('tbody').querySelectorAll('tr');

    2.获取完相关元素,下面就是给这些元素绑定事件了。绑定事件有三种方式:

    2.1传统绑定事件:

    e.onclick=function(){
        //函数体
      } 

    2.2 事件监听

    //IE9以上支持
    e.addEventListener('click',function(){ //函数体 })

    2.3IE9以下低级浏览器支持的事件监听

     e.attachEvent('onclick',function(){
                //函数体
            })

    注:眼力好的同学可以看看这三种方式的些许差别

    本次主要用到onclick点击事件、onmouseover鼠标移入事件和onmouseout鼠标移出事件,用传统方式编程

    e.onclick=function(){
        //函数体
      } e.onmouseover=function(){
        //函数体
      }
    e.onmouseout=function(){  
        //函数体
      }

    完整js部分代码

        <script>
            //获取元素
    
            var AllSelect=document.getElementById('AllSelect');
            var tb=document.getElementById('tb').getElementsByTagName('input');
            var trs=document.querySelector('tbody').querySelectorAll('tr');
            //注册事件
            
           // 鼠标点击事件
            AllSelect.onclick=function(){
                //console.log(this.checked);
                //this.checked 可以获知当前复选框的状况,选中为true,未选中为false
                //for 循环实现全选,当点击全选框时,下面复选框全部勾选
                for( var i=0;i<tb.length;i++){
                    tb[i].checked=this.checked;
                }
            }
            //单个框选中点击事件
             for(var i=0;i<tb.length;i++){
                tb[i].onclick=function(){
                    var flag=true;
                    for(var i=0;i<tb.length;i++){
                        if(! tb[i].checked){
                           flag=false;
                           break;
                        }
                    }
                    AllSelect.checked=flag;
                }
            }
    
            for(var j=0;j<trs.length;j++){
                trs[j].onmouseover=function(){
                    //console.log(1111);
                    this.className='bg';
                }
                trs[j].onmouseout=function(){
                    //console.log(1111);
                    this.className='';
                }
            }
        </script>    
  • 相关阅读:
    【转并修改】VS2013 MVC Web项目使用内置的IISExpress支持局域网内部机器(手机、PC)访问、调试
    ASP.NET MVC4 UEditor 的上传图片配置路径
    转:Java图形化界面设计——布局管理器之FlowLayout(流式布局)其他请参考转载出处网址
    转载:win7JDK环境配置
    转载:java保留2位小数
    转载:遍历Map的四种方法
    架构模式: 远程过程调用
    架构模式: 外部配置化
    架构模式: 微服务的基底
    架构模式: 服务部署平台
  • 原文地址:https://www.cnblogs.com/smile-xin/p/11520898.html
Copyright © 2011-2022 走看看