使用ul li 实现下拉列表多选

使用ul li 实现下拉列表多选

使用ul li 实现下拉列表多选,select为固定样式,但使用ul li 可自定义样式,具体实例如下:


<html>
<body>

       
    <input type="text" id="selectInput" placeholder="请选择">
    <!-- <div id="show" sytle="width:200px;height:30px;border:solid 2px black">请选择名称</div> -->
    <ul id="optionLis" style="margin-left:20px;width: 100px;height: 120px;border: solid 2px black">
        <li style="list-style-type:none;">万达</li>
        <li style="list-style-type:none;">百盛</li>
        <li style="list-style-type:none;">家乐福</li>
        <li style="list-style-type:none;">新玛特</li>
        <li style="list-style-type:none;">其他</li>

       
</div>

</body>
<script>
    window.onload = function () {
        var selectInput = document.getElementById('selectInput');
        //var inputvalue = selectInput.value;
        var optionLis = document.getElementById('optionLis');
        var optionList = optionLis.children;
        var arr= [];
        optionLis.style.display = "none";
        selectInput.onclick = function(){
            if(optionLis.style.display == "none"){
                optionLis.style.display = "block"
            }else{
                optionLis.style.display = "none"
            }
        }

        //循环遍历li标签
        for (var i=0;i<optionList.length;i++){
            //li标签的点击事件
            optionList[i].onclick = function (ev) {
                 //暂停其他的触发事件,阻止冒泡
                ev.stopPropagation();               
                for (var i=0; i<arr.length;i++) {
                    if (arr[i] == this.innerHTML){
                        arr.splice(i,1);
                        selectInput.value = arr.join(',');
                        LiStyle();
                        return;
                    }
                }
                arr.push(this.innerHTML);
                selectInput.value = arr.join(',');
                LiStyle();

            //选中时li标签的样式变化
                function LiStyle() {
                    for (var i=0;i<optionList.length;i++){
                        optionList[i].style.background = '';
                        // var _a = optionList[i].querySelector("a");
                        // var _sp = _a.querySelector("span");
                      //  _sp!=null && _a.removeChild(_sp);
                        
                    }
                    var arr1 = selectInput.value.split(',');
                    for (var i=0;i<arr1.length;i++) {
                        for (var j=0;j<optionList.length;j++){
                            if (arr1[i] == optionList[j].innerHTML){
                                optionList[j].style.background = 'red';
                                // var _a = optionList[j].querySelector("a");
                                // var _sp = document.createElement("span");
                                // _sp.style.float= "right";
                                // _sp.className = "glyphicon glyphicon-ok";
                                // _sp.innerHTML="OK";
                                // _a.appendChild(_sp);
                            }
                        }
                    }
                }
            }
        }
    }
</script>

</html>

实现效果:
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值