js多项筛选功能

 

 

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>js多项筛选功能</title>
    <style>
        dl,
        dd {
            margin: 0;
        }

        #boxSeach {
            width: 850px;
            background: rgba(255, 255, 255, 0.8);
            box-shadow: 0 0 10px rgba(73,66,66,.1);
            margin: 50px auto;
            border: 1px solid #E5E5E5;
            padding-left: 120px;
        }

        #boxSeach dl {
            line-height: 30px;
            /* border-bottom: 1px dashed #dadada; */
            margin: 0 20px;
            display: inline-block;
            position: relative;
        }

        #boxSeach dt {
            float: left;
            color: #8a8a8a;
        }

        #boxSeach dd {
            float: left;
            color: #252525;
            margin: 0 10px;
            font-size: 14px;
            cursor: pointer;
        }

        #boxSeach dd.active {
    color: #E24B36;
    font-weight: bold;
        }

        #boxSeach dl.select {
            background: #efefef;
            margin: 0;
            padding: 0 20px;
            margin-left: 20px;
        }

        #boxSeach dl.select dd{
    border: 1px solid #E24B36;
    height: 25px;
    line-height: 25px;
    margin-top: 13px;
    padding: 0 2px 0 10px;
    border-radius: 3px;background-color: #fff;
    margin: 5px;
        }
        #boxSeach dl.select dd span{
            width: 20px;
            height: 20px;
            display: inline-block;
            text-align: center;
            line-height: 20px;
            background: #E24B36;
            color: #fff;
            margin-left: 10px;
            cursor: pointer;border-radius: 5px;
        }
        #boxSeach .falstTitle {
            position: absolute;
            left: -120px;
        }
    </style>
</head>

<body>
    <div id="boxSeach">
            <dl>
                <div class="falstTitle">开放档案目录:</div>
                <dt>市、区档案馆开放档案目录:</dt>
                <dl>
                <dd>市档案馆开放档案</dd>
                <dd>普陀区档案馆</dd>
                <dd>徐汇区档案馆</dd>
                <dd>宝山区档案馆</dd>
                <dd>奉贤区档案馆</dd>
                <dd>虹口区档案馆</dd>
                <dd>松江区档案馆</dd>
                <dd>长宁区档案馆</dd>
                <dd>金山区档案馆</dd>
                <dd>上海市崇明区档案馆</dd>
                <dd>黄浦区档案馆</dd>
                <dd>杨浦区档案馆</dd>
                <dd>青浦区档案馆</dd>
                <dd>静安区档案馆</dd>
                <dd>闵行区档案馆</dd>
                <dd>上海市徐汇区档案馆</dd>
                <dd>浦东新区档案馆</dd>
                <dd>嘉定区档案馆</dd>
                </dl>
            </dl>
            <dl>
                <div class="falstTitle">专题档案目录:</div>
                <dt>专题档案目录:</dt>
                <dl>
                <dd>市档案馆老字号目录</dd>
                <dd>区档案馆老字号目录</dd>
                <dd>老字号企业档案目录</dd>
                </dl>
            </dl>
        <div>
        <dl class="select" style="border-bottom-width: 0px;">
            <dt>已选条件:</dt>
        </dl>
        </div>
    </div>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
    <script>

        var dls = document.querySelectorAll('dl:not(.select)');
        var selected=document.querySelector('.select');

        for (var i = 0; i < dls.length; i++) {
            dls[i].mark=false;    //给每一行的dl标签添加一条属性,用于对应下面的dd标签。我们约定如果这个属性的值为true表示对应的标签没有创建。如果值为false表示对应的标签已经创建了
            select(i);
        }
        function select(n) {
            var dds = dls[n].querySelectorAll('dd');
            var prev=null;
            var dd=null;    //每一行都需要创建一个dd标签,放到这里是为了如果标签已经被创建了,通过这个变量能够找到这个标签
            for (var i = 0; i < dds.length; i++) {
                dds[i].onclick = function () {
                    // console.log($('.select').text(),'值')
                    //给当前点击的添加一个高亮
                    //prev && (prev.className = '');
                    if(prev){
                        prev.className = ''
                    }
                    this.className = 'active';
                    prev = this;
                    //创建dd标签
                    var parent=this.parentNode;
                    if(!parent.mark){    //这个条件满足说明对应的dd标签还没有创建
                        dd=document.createElement('dd');
                        dd.innerHTML=this.innerHTML;
                        selected.appendChild(dd);
                        parent.mark=true;

                        var textVal = $('.select dd').text();
                        textVal = textVal.split("X");
                        console.log(textVal,'textVal')
                    }else{
                        //走这里的时候说明对应的标签已经创建了,只需要把内容修改了就可以了
                        dd.innerHTML=this.innerHTML;
                    }
                    var span=document.createElement('span');
                    var This=this;
                    span.innerHTML='X';
                    span.onclick=function(){
                        //alert(1);
                        /*
                            点击关闭后要做的事情
                                1、移除掉dd
                                2、把上面点击的那个class去掉
                                3、父级身上的mark属性要更新
                         */
                        selected.removeChild(dd);
                        This.className='';
                        parent.mark=false;
                    };
                    dd.appendChild(span);
                };
            }
        }
    </script>
</body>

</html>

 

posted @ 2021-07-05 17:43  塞巴斯酱  阅读(395)  评论(0编辑  收藏  举报