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 相关文章推荐
gridpanel动态加载数据的实例代码
Jul 18 Javascript
JavaScript识别网页关键字并进行描红的方法
Nov 09 Javascript
javascript合并表格单元格实例代码
Jan 03 Javascript
浅析JavaScript作用域链、执行上下文与闭包
Feb 01 Javascript
JavaScript修改作用域外变量的方法
Mar 25 Javascript
js实现统计字符串中特定字符出现个数的方法
Aug 02 Javascript
canvas雪花效果核心代码分享
Feb 19 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
Jun 29 jQuery
js常见遍历操作小结
Jun 06 Javascript
webpack3.0升级4.0的方法步骤
Apr 02 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
Aug 18 Javascript
VUE Elemen-ui之穿梭框使用方法详解
Jan 19 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
PHP4中实现动态代理
2006/10/09 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
js获取ajax返回值代码
2014/04/30 Javascript
JavaScript中switch判断容易犯错的一个细节
2014/08/27 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
详解javascript传统方法实现异步校验
2016/01/22 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
2016/07/01 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
vuex如何重置所有state(可定制)
2019/01/17 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
Vue实现导航栏的显示开关控制
2019/11/01 Javascript
python Django模板的使用方法(图文)
2013/11/04 Python
Python yield 小结和实例
2014/04/25 Python
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
python机器学习之KNN分类算法
2018/08/29 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
python字符串切割:str.split()与re.split()的对比分析
2019/07/16 Python
纯CSS3实现移动端展开和收起效果的示例代码
2020/04/26 HTML / CSS
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
中兴通讯全球官方网站:ZTE
2020/12/26 全球购物
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
工商管理系学生的自我评价分享
2013/11/29 职场文书
《学会待客》教学反思
2014/02/22 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
内勤岗位职责范本
2015/04/13 职场文书
2015年法院工作总结范文
2015/04/28 职场文书
公司费用报销管理制度
2015/08/04 职场文书