JS实现三级联动

简介: JS实现三级联动
<!DOCTYPE html>
<html>
<head>
  <title>三级联动</title>
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
  <select id="province">
    <option value="">请选择省份</option>
  </select>
  <select id="city">
    <option value="">请选择城市</option>
  </select>
  <select id="district">
    <option value="">请选择区县</option>
  </select>
  <script>
    // 省市区数据
    const data = {
      province: [
        { name: '北京', cities: ['北京市'] },
        { name: '上海', cities: ['上海市'] },
        { name: '广东', cities: ['广州市', '深圳市', '珠海市'] }
        // 其他省市数据...
      ],
      city: {
        '北京': ['北京市'],
        '上海': ['上海市'],
        '广东': ['广州市', '深圳市', '珠海市']
        // 其他省对应的市数据...
      },
      district: {
        '北京市': ['东城区', '西城区', '朝阳区', '海淀区'],
        '上海市': ['黄浦区', '徐汇区', '静安区', '长宁区'],
        '广州市': ['越秀区', '荔湾区', '天河区', '海珠区'],
        '深圳市': ['罗湖区', '福田区', '南山区', '宝安区'],
        '珠海市': ['香洲区', '斗门区', '金湾区']
        // 其他市对应的区县数据...
      }
    };
    const provinceSelect = document.getElementById('province');
    const citySelect = document.getElementById('city');
    const districtSelect = document.getElementById('district');
    // 初始化省份选项
    for (let i = 0; i < data.province.length; i++) {
      const option = document.createElement('option');
      option.value = data.province[i].name;
      option.textContent = data.province[i].name;
      provinceSelect.appendChild(option);
    }
    // 省份选择改变时触发
    provinceSelect.addEventListener('change', function() {
      const selectedProvince = this.value;
      resetOptions(citySelect, '请选择城市');
      if (selectedProvince) {
        const cities = data.city[selectedProvince];
        for (let i = 0; i < cities.length; i++) {
          const option = document.createElement('option');
          option.value = cities[i];
          option.textContent = cities[i];
          citySelect.appendChild(option);
        }
      }
    });
    // 城市选择改变时触发
    citySelect.addEventListener('change', function() {
      const selectedCity = this.value;
      resetOptions(districtSelect, '请选择区县');
      if (selectedCity) {
        const districts = data.district[selectedCity];
        for (let i = 0; i < districts.length; i++) {
          const option = document.createElement('option');
          option.value = districts[i];
          option.textContent = districts[i];
          districtSelect.appendChild(option);
        }
      }
    });
    // 重置下拉选项
    function resetOptions(selectElement, defaultText) {
      selectElement.innerHTML = '';
      const defaultOption = document.createElement('option');
      defaultOption.value = '';
      defaultOption.textContent = defaultText;
      selectElement.appendChild(defaultOption);
    }
  </script>
</body>
</html>

首先,在 HTML 中定义了三个 select 元素来表示省份、城市和区县的选择。


然后,在 JavaScript 中定义了一个 data 对象,保存了省市区的数据。其中,province 属性保存了所有的省份数据,city 属性保存了各个省份对应的城市数据,district 属性保存了各个城市对应的区县数据。


接下来,我们通过获取 select 元素的引用,并在初始化时给第一个省份 select 元素添加省份选项,在这个示例中,我们使用原生的 JavaScript 实现了三级联动的功能。首先,在 HTML 中定义了三个 select 元素来表示省份、城市和区县的选择。


然后,在 JavaScript 中定义了一个 data 对象,保存了省市区的数据。其中,province 属性保存了所有的省份数据,city 属性保存了各个省份对应的城市数据,district 属性保存了各个城市对应的区县数据。


接下来,我们通过获取 select 元素的引用,并在初始化时给第一个省份 select 元素添加省份选项。然后,为省份 select 元素添加一个 change 事件监听器,当省份选择改变时,根据选择的省份动态生成对应的城市选项,并将其添加到城市 select 元素中。同样地,为城市 select 元素添加 change 事件监听器,当城市选择改变时,根据选择的城市动态生成对应的区县选项,并将其添加到区县 select 元素中。


最后,我们定义了一个 resetOptions 函数,用于清空并重置 select 元素的选项。该函数接受两个参数,一个是 select 元素的引用,另一个是默认的提示文本。它会先清空 select 元素的子元素,然后创建一个默认的选项,并将其添加至 select 元素中。


相关文章
|
9月前
|
JSON JavaScript 数据格式
如何用JS实现三级联动功能
如何用JS实现三级联动功能
74 0
|
9月前
|
JavaScript 前端开发
原生js做三级联动
原生js做三级联动
40 0
|
前端开发 JavaScript
前端基础 - JavaScript之省市联动简单案例
前端基础 - JavaScript之省市联动简单案例
116 0
|
9月前
|
JavaScript 前端开发
「 javaScript实现省市区三级联动」
「 javaScript实现省市区三级联动」
|
7月前
|
NoSQL JavaScript 前端开发
JavaScript与数据库MongoDB的联动
JavaScript和MongoDB结合,构建Web应用的关键技术。MongoDB,作为NoSQL数据库,以其灵活性和高性能深受开发者喜爱。本文探讨两者的基本概念,如JavaScript在前端交互和后端数据处理的作用,MongoDB的文档存储和查询特性。通过Node.js和mongoose库,展示了连接数据库、定义数据模型及增删改查操作的代码示例。强调了性能优化(如索引、批量操作)和安全措施(如权限控制、数据加密)的重要性。最后,提供了一个简单的CRUD应用示例,涵盖Express和前端API调用。
78 0
|
存储 JSON JavaScript
|
8月前
|
存储 JavaScript 前端开发
JS三级联动
JS三级联动
|
9月前
|
JavaScript 数据可视化 前端开发
钉钉宜搭通过js触发子表单数据联动
钉钉宜搭通过js触发子表单数据联动
|
9月前
|
JavaScript 前端开发
js 实现三级联动
js 实现三级联动
102 0
|
9月前
|
JavaScript
制作JS省市区三级联动遇到市区选项是空白的问题
制作JS省市区三级联动遇到市区选项是空白的问题

热门文章

最新文章