js实现select下拉框选择


Posted in Javascript onJanuary 11, 2020

最近在做一个项目需要兼容到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 相关文章推荐
JavaScript 轻松搞定快捷留言功能 只需一行代码
Apr 01 Javascript
jquery 全局AJAX事件使用代码
Nov 05 Javascript
Javascript面向对象设计一 工厂模式
Dec 20 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
Jul 10 Javascript
jQuery自定义添加&quot;$&quot;与解决&quot;$&quot;冲突的方法
Jan 19 Javascript
jQuery+css实现炫目的动态块漂移效果
Jan 28 Javascript
angularjs 表单密码验证自定义指令实现代码
Oct 27 Javascript
AngularJS实现在ng-Options加上index的解决方法
Nov 03 Javascript
js实现九宫格拼图小游戏
Feb 13 Javascript
详解jquery选择器的原理
Aug 01 jQuery
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
Dec 13 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
Feb 21 Javascript
js实现二级联动简单实例
Jan 11 #Javascript
jQuery实现轮播图效果demo
Jan 11 #jQuery
详解微信小程序中var、let、const用法与区别
Jan 11 #Javascript
jQuery擦除插件eraser使用方法详解
Jan 11 #jQuery
详解javascript中var与ES6规范中let、const区别与用法
Jan 11 #Javascript
jQuery实现鼠标移入显示蒙版效果
Jan 11 #jQuery
jQuery实现手风琴效果(蒙版)
Jan 11 #jQuery
You might like
PHP以及MYSQL日期比较方法
2012/11/29 PHP
一个经典的PHP验证码类分享
2014/11/18 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
js自定义事件及事件交互原理概述(二)
2013/02/01 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
js确认框confirm()用法实例详解
2016/01/07 Javascript
详解JavaScript中的构造器Constructor模式
2016/01/14 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
详解Python中 sys.argv[]的用法简明解释
2017/12/20 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
树莓派与PC端在局域网内运用python实现即时通讯
2019/06/22 Python
pyqt5 键盘监听按下enter 就登陆的实例
2019/06/25 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
python装饰器使用实例详解
2019/12/14 Python
Python中flatten( ),matrix.A用法说明
2020/07/05 Python
5分钟快速掌握Python定时任务框架的实现
2021/01/26 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
好药师网上药店:安全合法的网上药品零售药房
2017/02/15 全球购物
物流专业大学应届生求职信
2013/11/03 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书
社区敬老月活动总结
2015/05/07 职场文书
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python
分析SQL窗口函数之取值窗口函数
2022/04/21 Oracle