当前位置:首页 > JavaScript

js实现三级级联

2026-04-04 08:12:20JavaScript

实现三级级联的核心思路

三级级联通常指三个下拉菜单之间的联动选择,例如省市区选择。当第一级选择变化时,第二级和第三级内容相应更新;第二级变化时,第三级内容更新。

数据结构准备

使用嵌套对象或数组存储级联数据。例如:

const regionData = {
  '江苏省': {
    '南京市': ['玄武区', '鼓楼区'],
    '苏州市': ['姑苏区', '工业园区']
  },
  '浙江省': {
    '杭州市': ['上城区', '西湖区'],
    '宁波市': ['海曙区', '江北区']
  }
};

HTML结构示例

<select id="province"></select>
<select id="city"></select>
<select id="district"></select>

JavaScript实现步骤

初始化一级菜单

const provinceSelect = document.getElementById('province');
Object.keys(regionData).forEach(province => {
  const option = document.createElement('option');
  option.value = province;
  option.textContent = province;
  provinceSelect.appendChild(option);
});

一级菜单变化时更新二级菜单

provinceSelect.addEventListener('change', function() {
  const citySelect = document.getElementById('city');
  citySelect.innerHTML = '<option value="">请选择</option>';
  const districtSelect = document.getElementById('district');
  districtSelect.innerHTML = '<option value="">请选择</option>';

  const selectedProvince = this.value;
  if (selectedProvince) {
    Object.keys(regionData[selectedProvince]).forEach(city => {
      const option = document.createElement('option');
      option.value = city;
      option.textContent = city;
      citySelect.appendChild(option);
    });
  }
});

二级菜单变化时更新三级菜单

document.getElementById('city').addEventListener('change', function() {
  const districtSelect = document.getElementById('district');
  districtSelect.innerHTML = '<option value="">请选择</option>';

  const selectedProvince = provinceSelect.value;
  const selectedCity = this.value;
  if (selectedProvince && selectedCity) {
    regionData[selectedProvince][selectedCity].forEach(district => {
      const option = document.createElement('option');
      option.value = district;
      option.textContent = district;
      districtSelect.appendChild(option);
    });
  }
});

完整实现示例

document.addEventListener('DOMContentLoaded', function() {
  // 数据结构和HTML元素初始化代码
  // 事件监听器代码
});

优化建议

使用AJAX动态加载数据可减少初始页面负载

function loadProvinceData() {
  // 模拟AJAX请求
  fetch('/api/provinces').then(response => response.json()).then(data => {
    // 填充省份下拉框
  });
}

添加默认选项可提升用户体验

js实现三级级联

provinceSelect.innerHTML = '<option value="">请选择省份</option>';

注意事项

确保在DOM加载完成后执行JavaScript代码。对于动态创建的元素,可能需要使用事件委托。考虑添加数据验证逻辑,防止因数据缺失导致的错误。

标签: 级联js
分享给朋友:

相关文章

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与响应式…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…