当前位置:首页 > 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:

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

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

js 实现 下拉列表

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

相关文章

vue实现商品列表

vue实现商品列表

Vue实现商品列表的方法 使用Vue实现商品列表需要结合数据绑定、组件化和状态管理。以下是实现商品列表的几种常见方法: 基础数据绑定实现 在Vue组件中定义商品数据数组,使用v-for指令循环渲染商…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

uniapp商品列表

uniapp商品列表

商品列表实现方法 在uniapp中实现商品列表功能,可以通过多种方式完成,以下是几种常见的方法: 使用scroll-view组件实现滚动列表 <scroll-view scroll-y="t…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…