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语句可以不以;结尾的烦恼
Mar 08 Javascript
asp.net下利用js实现返回上一页的实现方法小集
Nov 24 Javascript
JQuery的AJAX实现文件下载的小例子
May 15 Javascript
JS函数重载的解决方案
May 13 Javascript
js和jquery设置disabled属性为true使按钮失效
Aug 07 Javascript
javascript操作字符串的原生方法
Dec 22 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
Apr 06 Javascript
jQuery+ajax实现局部刷新的两种方法
Jun 08 jQuery
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
May 07 Javascript
使用jQuery动态设置单选框的选中效果
Dec 06 jQuery
IntelliJ IDEA编辑器配置vue高亮显示
Sep 26 Javascript
node.js使用fs读取文件出错的解决方案
Oct 23 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生成高清缩略图实例详解
2015/12/07 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
ThinkPHP5框架中使用JWT的方法示例
2020/06/03 PHP
键盘控制事件应用教程大全
2006/11/24 Javascript
javascript 操作文件 实现方法小结
2009/07/02 Javascript
jquery 利用show和hidden实现级联菜单示例代码
2013/08/09 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
2014/01/24 Javascript
JavaScript中的getDay()方法使用详解
2015/06/09 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
基于jquery实现左右按钮点击的图片切换效果
2021/01/27 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
javascript创建元素和删除元素实例小结
2019/06/19 Javascript
vue中使用vee-validator完成表单校验方案
2019/11/01 Javascript
vue中后端做Excel导出功能返回数据流前端的处理操作
2020/09/08 Javascript
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
[01:11:48]Fnatic vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
Python 实现数据结构-循环队列的操作方法
2019/07/17 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
我想声明一个指针并为它分配一些空间, 但却不行。这些代码有什么 问题?char *p; *p = malloc(10);
2016/10/06 面试题
大学生职业生涯规划书的基本内容
2014/01/06 职场文书
上班看电影检讨书
2014/02/12 职场文书
汉语言文学职业规划
2014/02/14 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang
详解vue中v-for的key唯一性
2021/05/15 Vue.js
Java spring定时任务详解
2021/10/05 Java/Android
python脚本框架webpy模板赋值实现
2021/11/20 Python
宝塔更新Python及Flask项目的部署
2022/04/11 Python