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 相关文章推荐
js解决select下拉选不中问题
Oct 14 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
Oct 17 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
Jul 28 Javascript
js HTML5 Ajax实现文件上传进度条功能
Feb 13 Javascript
举例讲解如何判断JavaScript中对象的类型
Apr 22 Javascript
VueJS如何引入css或者less文件的一些坑
Apr 25 Javascript
JS实现中文汉字按拼音排序的方法
Oct 09 Javascript
浅析Vue自定义组件的v-model
Nov 26 Javascript
JS实现页面数据懒加载
Feb 13 Javascript
vue学习笔记之Vue中css动画原理简单示例
Feb 29 Javascript
javascript单张多张图无缝滚动实例代码
May 10 Javascript
Vue ​v-model相关知识总结
Jan 28 Vue.js
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设计模式 Observer(观察者模式)
2011/06/26 PHP
PHP 第一节 php简介
2012/04/28 PHP
php教程 插件机制在PHP中实现方案
2012/11/02 PHP
PHP耦合设计模式实例分析
2018/08/08 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
2007/01/29 Javascript
用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
2011/05/02 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
jQuery实现div浮动层跟随页面滚动效果
2014/02/11 Javascript
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
2014/09/17 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
jQuery Mobile和HTML5开发App推广注册页
2016/11/07 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
uni-app使用countdown插件实现倒计时
2020/11/01 Javascript
一些Python中的二维数组的操作方法
2015/05/02 Python
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
Python自然语言处理之词干,词形与最大匹配算法代码详解
2017/11/16 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
用python制作游戏外挂
2018/01/04 Python
Python的高阶函数用法实例分析
2019/04/11 Python
python BlockingScheduler定时任务及其他方式的实现
2019/09/19 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
Django-xadmin+rule对象级权限的实现方式
2020/03/30 Python
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
英国团购网站:Groupon英国
2017/11/28 全球购物
服装创业计划书范文
2014/02/05 职场文书
2014年党支部学习材料
2014/05/19 职场文书
市场策划求职信
2014/08/07 职场文书
交通安全主题班会
2015/08/12 职场文书
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL