当前位置:首页 > 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
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

vue 实现长列表

vue 实现长列表

vue 实现长列表的优化方法 使用虚拟滚动技术,只渲染可视区域内的元素,大幅减少DOM节点数量。通过计算滚动位置动态更新显示内容,降低内存占用和渲染压力。 <template> &l…

vue公共列表的实现

vue公共列表的实现

Vue 公共列表的实现方法 在 Vue 中实现公共列表组件,可以通过封装可复用的逻辑和模板来完成。以下是几种常见的实现方式: 使用 props 和 slots 通过 props 接收列表数据,使用…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 jQ…