当前位置:首页 > JavaScript

js 实现 下拉列表

2026-03-01 05:26:31JavaScript

使用原生 JavaScript 实现下拉列表

使用 <select><option> 元素创建基础下拉列表:

<select id="myDropdown">
  <option value="option1">选项1</option>
  <option value="option2">选项2</option>
  <option value="option3">选项3</option>
</select>

通过 JavaScript 获取选中的值:

document.getElementById('myDropdown').addEventListener('change', function() {
  console.log(this.value); // 获取选中的值
});

自定义样式下拉列表

创建更灵活的自定义下拉组件:

<div class="custom-dropdown">
  <div class="dropdown-header">选择选项</div>
  <ul class="dropdown-options">
    <li data-value="opt1">选项一</li>
    <li data-value="opt2">选项二</li>
    <li data-value="opt3">选项三</li>
  </ul>
</div>

添加交互逻辑:

const dropdown = document.querySelector('.custom-dropdown');
const header = dropdown.querySelector('.dropdown-header');
const options = dropdown.querySelectorAll('.dropdown-options li');

header.addEventListener('click', () => {
  dropdown.classList.toggle('active');
});

options.forEach(option => {
  option.addEventListener('click', () => {
    header.textContent = option.textContent;
    dropdown.classList.remove('active');
    console.log(option.dataset.value); // 获取选中值
  });
});

动态生成下拉选项

从数据数组动态创建选项:

const data = [
  { id: 1, name: '北京' },
  { id: 2, name: '上海' },
  { id: 3, name: '广州' }
];

const select = document.createElement('select');
data.forEach(item => {
  const option = document.createElement('option');
  option.value = item.id;
  option.textContent = item.name;
  select.appendChild(option);
});

document.body.appendChild(select);

多级联动下拉列表

实现省市联动选择:

const provinceSelect = document.getElementById('province');
const citySelect = document.getElementById('city');

const data = {
  '北京': ['朝阳区', '海淀区', '东城区'],
  '上海': ['浦东新区', '静安区', '黄浦区']
};

// 填充省份
Object.keys(data).forEach(province => {
  const option = document.createElement('option');
  option.value = province;
  option.textContent = province;
  provinceSelect.appendChild(option);
});

// 省份变化时更新城市
provinceSelect.addEventListener('change', function() {
  citySelect.innerHTML = '<option value="">选择城市</option>';
  const cities = data[this.value];
  cities.forEach(city => {
    const option = document.createElement('option');
    option.value = city;
    option.textContent = city;
    citySelect.appendChild(option);
  });
});

搜索过滤下拉列表

为下拉选项添加搜索功能:

<input type="text" id="searchInput" placeholder="搜索...">
<ul id="searchableDropdown">
  <li>苹果</li>
  <li>香蕉</li>
  <li>橙子</li>
  <li>葡萄</li>
</ul>

实现搜索过滤:

const searchInput = document.getElementById('searchInput');
const dropdownItems = document.querySelectorAll('#searchableDropdown li');

searchInput.addEventListener('input', () => {
  const searchTerm = searchInput.value.toLowerCase();
  dropdownItems.forEach(item => {
    const text = item.textContent.toLowerCase();
    item.style.display = text.includes(searchTerm) ? '' : 'none';
  });
});

使用第三方库实现高级下拉

使用 Select2 库创建功能丰富的下拉列表:

<select class="js-example-basic-multiple" multiple="multiple">
  <option value="AL">Alabama</option>
  <option value="WY">Wyoming</option>
</select>

初始化 Select2:

js 实现 下拉列表

$(document).ready(function() {
  $('.js-example-basic-multiple').select2();
});

这些方法涵盖了从基础到高级的下拉列表实现方式,可以根据项目需求选择合适的方案。

标签: 列表js
分享给朋友:

相关文章

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let currentY…