zoukankan      html  css  js  c++  java
  • 原生js实现全选和反选以及任意一个未被选中的效果

    模仿一个百度音乐的全选和反选的的操作。

    html代码如下:

    <div class="box">
        <ul id="lists">
            <li>
                <input type="checkbox" value="">
                <span>我爱你中国</span>
            </li>
            <li>
                <input type="checkbox" value="">
                <span>北京</span>
            </li>
            <li>
                <input type="checkbox" value="">
                <span>花火</span>
            </li>
            <li>
                <input type="checkbox" value="">
                <span>回来</span>
            </li>
        </ul>
        <p>
            <input type="checkbox" value="">
            <span>全选</span>
        </p>
    </div>

    css代码如下:

    <style>
        *{margin:0;padding:0;}
        ul,li{list-style: none;margin:0;padding:0;}
        li{line-height:45px;padding:0 15px;}
        .box{border:1px solid #e5e5e5;width:200px;margin:0 auto;}
        #lists{width:200px;}
        p{line-height:45px;border-top:1px solid #e5e5e5;padding:0 15px;}
    </style>

    js代码如下:

    window.onload=function(){
            var oUl=document.getElementById("lists");
            var aLi=oUl.getElementsByTagName("li");
            var oP=document.getElementsByTagName("p")[0];
            var aQxuan=oP.getElementsByTagName("input")[0];
            var arrColor=["#f6f6f6","#f0fdff"];
            for(var i=0;i<aLi.length;i++){
                aLi[i].index=i;
                aLi[i].style.backgroundColor=arrColor[i%arrColor.length];//所有的li隔行变色
                //鼠标移入li背景变灰
                aLi[i].onmouseover=function(){
                    this.style.backgroundColor="#ccc"
                };
                //鼠标移出li背景变当前色值
                aLi[i].onmouseout=function(){
                    this.style.backgroundColor=arrColor[this.index%arrColor.length]
                };
                //全选
                aQxuan.onclick=function(){
                    //alert(1)
                    if(this.checked==true){
                        for(var i=0;i<aLi.length;i++){
                            var aInp=aLi[i].getElementsByTagName("input")[0];
                            aInp.checked=true;
                        }
                    }else{
                        for(var i=0;i<aLi.length;i++){
                            var aInp=aLi[i].getElementsByTagName("input")[0];
                            aInp.checked=false;
                        }
                    }
                };
    
                var aInp=aLi[i].getElementsByTagName("input")[0];
    
                aInp.onclick=function(){
                    if(this.checked==false){//只要自己未被选中,那么总得全选就不被选中
                        aQxuan.checked=false;
                    }else{
                        var onOff=true;//设定一个开关
                        for(var i=0;i<aLi.length;i++){
                            var Inp=aLi[i].getElementsByTagName("input")[0];
                            if(Inp.checked==false){
                                onOff=false;//若有一个未被选中,那么开关就为假
                            }
                        }
                        if(onOff){
                            aQxuan.checked=true;
                        }
                    }
                }
            }
    
    
        }

    代码运行效果图如下:

  • 相关阅读:
    Emmet Documentation
    微软雅黑的Unicode码和英文名
    Eclipse让代码自动换行(WordWarp)
    如何更改MyEclipse代码自动换行的长度?
    PHP之道推荐使用PHP版本,数据库方式,以及虚拟机的创建程序
    ime-mode:disabled是什么?
    document.getElementsByClassName在ie8及其以下浏览器的兼容性问题
    Unobtrusive JavaScript 不唐突的JavaScript的七条准则
    详解 arguments, callee, caller, call, apply的区别
    怎样在谷歌浏览器上加载金山词霸的取词插件?
  • 原文地址:https://www.cnblogs.com/web001/p/8040441.html
Copyright © 2011-2022 走看看