欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

原生js实现select下拉框选择

程序员文章站 2022-07-13 12:18:44
...

最近在做一个项目需要兼容到ie不同版本,在使用select时遇到了各种问题。后来索性就自己使用原生js实现了这样一个下拉框,话不多说,直接上代码吧。

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自定义select</title>
</head>
<style>
    *{
        margin: 0;
        padding: 0;
    }
    #main{
        position: relative;
        width: 280px;
        height: 42px;
    }
    #content{
        width: 280px;
        height: 42px;
        line-height: 42px;
        padding-left: 10px;
        background: rgb(255, 255, 255);
        border-radius: 2px;
        border: 1px solid rgb(221, 221, 221);
        font-size: 16px;
        font-family: MicrosoftYaHei;
        color: rgb(51, 51, 51);
        cursor: pointer;
    }
    #selectImg{
        position: absolute;
        top:13px;
        right: 10px;
        cursor: pointer;
    }
    #selectItem{
        display: none;
        border: 1px solid #eee;
        width: 290px;
    }
    #selectItem ul{
        list-style: none;
    }
    #selectItem ul li{
        height: 30px;
        line-height: 30px;
        padding-left: 10px;
        cursor: pointer;
    }
    #selectItem ul li:hover{
        background-color:#f5f7fa;
    }
</style>
<body>
    <div id="main">
        <div id="content">

        </div>
        <img id="selectImg" src="./icon_select.png" alt="">
        <div id="selectItem">
        <!--    <ul>
                <li data-value="1">北京</li>
                <li data-value="2">上海</li>
                <li data-value="3">深圳</li>
            </ul>-->
        </div>
    </div>

</body>
<script>
    var data = [{name:'北京',value:'1'},{name:'上海',value:'2'},{name:'广州',value:'3'}]
    var content = document.getElementById('content');
    var selectImg = document.getElementById('selectImg');
    var selectItem = document.getElementById('selectItem');

    var ul = document.createElement('ul');
    selectItem.appendChild(ul);
    for(var i = 0; i < data.length; i++){
        var li = document.createElement('li');
        li.setAttribute('data-value',data[i].value);
        li.innerText = data[i].name;
        ul.appendChild(li);
    }
    /**
     * 点击下拉箭头
     */
    selectImg.onclick = function () {
        console.log(selectItem.style.display);
        if(selectItem.style.display == 'none' || selectItem.style.display == ''){
            selectItem.style.display = 'block';
        }else{
            selectItem.style.display = 'none';
        }

    }

    content.onclick = function () {
        if(selectItem.style.display == 'none' || selectItem.style.display == ''){
            selectItem.style.display = 'block';
        }else{
            selectItem.style.display = 'none';
        }
    }

    var lis = selectItem.getElementsByTagName('li');
    for(var i = 0; i < lis.length; i++){
        lis[i].onclick = function () {
            console.log(this.innerHTML,this.getAttribute('data-value'));
            content.innerText = this.innerHTML;
            selectItem.style.display = 'none';
        }
    }
</script>
</html>

原生js实现select下拉框选择

相关标签: javascript select