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 相关文章推荐
读jQuery之六 缓存数据功能介绍
Jun 21 Javascript
jQuery中contents()方法用法实例
Jan 08 Javascript
用JS生成UUID的方法实例
Mar 30 Javascript
jQuery循环遍历子节点并获取值的方法
Apr 14 Javascript
详解Js模板引擎(TrimPath)
Nov 22 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
Dec 28 Javascript
Es6 Generator函数详细解析
Feb 24 Javascript
JS中promise化微信小程序api
Apr 12 Javascript
JavaScript事件冒泡与事件捕获实例分析
Aug 01 Javascript
Element UI 自定义正则表达式验证方法
Sep 04 Javascript
如何在JS文件中获取Vue组件
Sep 16 Javascript
JavaScript执行机制详细介绍
Dec 06 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中配置文件操作 如config.php文件的读取修改等操作
2012/07/07 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
PHP封装的数据库保存session功能类
2016/07/11 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
给Javascript数组插入一条记录的代码
2007/08/30 Javascript
javascript 面向对象编程基础:封装
2009/08/21 Javascript
JavaScript面向对象之Prototypes和继承
2012/07/12 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
js简单实现图片延迟加载的方法
2016/07/19 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
2016/12/02 Javascript
详解能在多种前端框架下使用的表格控件
2017/01/11 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
JavaScript简单实现合并两个Json对象的方法示例
2017/10/16 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
深入理解es6块级作用域的使用
2019/03/28 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
原生JS运动实现轮播图
2021/01/02 Javascript
python&amp;MongoDB爬取图书馆借阅记录
2016/02/05 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
使用python为mysql实现restful接口
2018/01/05 Python
Python3 jupyter notebook 服务器搭建过程
2018/11/30 Python
pytorch实现从本地加载 .pth 格式模型
2020/02/14 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
乔迁宴答谢词
2014/01/21 职场文书
会计求职自荐信
2014/06/20 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
材料物理专业求职信
2014/09/01 职场文书
2015年电工工作总结
2015/04/10 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
解析Redis Cluster原理
2021/06/21 Redis
html form表单基础入门案例讲解
2021/07/21 HTML / CSS