当前位置:首页 > 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实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现图片轮播

js实现图片轮播

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

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…