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实现简单的时钟实例代码
Nov 23 Javascript
DIV始终居中的js代码
Feb 17 Javascript
jQuery中DOM树操作之复制元素的方法
Jan 23 Javascript
使用webpack-dev-server处理跨域请求的方法
Apr 18 Javascript
vue-cli项目代理proxyTable配置exclude的方法
Sep 20 Javascript
angular4笔记系列之内置指令小结
Nov 09 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
Sep 14 Javascript
jquery将json转为数据字典的实例代码
Oct 11 jQuery
JavaScript原型继承和原型链原理详解
Feb 04 Javascript
vue项目中使用vue-layer弹框插件的方法
Mar 11 Javascript
微信小程序以ssm做后台开发的实现示例
Apr 08 Javascript
JS写滑稽笑脸运动效果
May 28 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数据库连接类~~做成一个分页类!
2006/11/25 PHP
php array_search() 函数使用
2010/04/13 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
js 提交和设置表单的值
2008/12/19 Javascript
深入认识javascript中的eval函数
2009/11/02 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
JS自定义对象实现Java中Map对象功能的方法
2015/01/20 Javascript
Node.js中child_process实现多进程
2015/02/03 Javascript
js实现图片从左往右渐变切换效果的方法
2015/02/06 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
react native带索引的城市列表组件的实例代码
2017/08/08 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
2020/02/15 Javascript
node.js 如何监视文件变化
2020/09/01 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
python使用knn实现特征向量分类
2018/12/26 Python
python实现FTP循环上传文件
2020/03/20 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
销售找工作求职信
2013/12/20 职场文书
30年同学聚会邀请函
2014/01/25 职场文书
汽车销售员如何做职业生涯规划
2014/02/16 职场文书
幼儿教师培训感言
2014/03/08 职场文书
年终总结会主持词
2014/03/25 职场文书
pytorch中[..., 0]的用法说明
2021/05/20 Python
Golang实现AES对称加密的过程详解
2021/05/20 Golang
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android