JavaScript 原生态实现省市县级联动

在Web开发中,省市县级联动是一个常见的需求。它可以帮助用户选择地址信息,提供更好的用户体验。本文将介绍如何使用纯JavaScript实现省、市、县的连动选择功能。

1. 项目准备

为了实现省市县级联动,我们需要以下几个基本要素:

  • HTML结构
  • JavaScript逻辑
  • JSON格式的数据源

首先,我们准备一个基础的HTML框架,包含三个下拉框来选择省、市和县。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>省市县级联动</title>
</head>
<body>
    省市县级联动示例
    <label for="province">省份:</label>
    <select id="province"></select>

    <label for="city">城市:</label>
    <select id="city"></select>

    <label for="county">县区:</label>
    <select id="county"></select>

    <script src="script.js"></script>
</body>
</html>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

2. 数据源准备

接下来,我们使用JSON格式的数据来存储省市县的信息。以下是一个简单的示例数据:

{
    "北京市": {
        "市辖区": ["东城区", "西城区", "朝阳区"],
        "昌平区": [],
        "海淀区": []
    },
    "广东省": {
        "广州市": ["天河区", "越秀区"],
        "深圳市": ["福田区", "罗湖区"]
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

我们将该数据保存在data.json文件中。

3. JavaScript 逻辑实现

现在,我们需要编写JavaScript代码以实现下拉框的联动。以下是主要功能的代码逻辑:

  1. 加载JSON数据。
  2. 动态填充省、市和县的下拉框。
  3. 实现联动效果。

我们将把上面的逻辑放入一个名为 script.js 的JavaScript文件中。

// script.js

const data = {
    "北京市": {
        "市辖区": ["东城区", "西城区", "朝阳区"],
        "昌平区": [],
        "海淀区": []
    },
    "广东省": {
        "广州市": ["天河区", "越秀区"],
        "深圳市": ["福田区", "罗湖区"]
    }
};

const provinceSelect = document.getElementById('province');
const citySelect = document.getElementById('city');
const countySelect = document.getElementById('county');

// 填充省份下拉框
for (let province in data) {
    const option = document.createElement('option');
    option.value = province;
    option.textContent = province;
    provinceSelect.appendChild(option);
}

// 省份变化事件
provinceSelect.addEventListener('change', function () {
    const cities = data[this.value];
    citySelect.innerHTML = ''; // 清空城市下拉框
    countySelect.innerHTML = ''; // 清空县区下拉框

    for (let city in cities) {
        const option = document.createElement('option');
        option.value = city;
        option.textContent = city;
        citySelect.appendChild(option);
    }
});

// 城市变化事件
citySelect.addEventListener('change', function () {
    const counties = data[provinceSelect.value][this.value];
    countySelect.innerHTML = ''; // 清空县区下拉框

    counties.forEach(county => {
        const option = document.createElement('option');
        option.value = county;
        option.textContent = county;
        countySelect.appendChild(option);
    });
});
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.

4. 启动项目

将上述的HTML、JavaScript代码和JSON数据准备好后,打开HTML文件,你将看到三个下拉框。当你选择某个省时,城市下拉框会相应更新,而选择城市后,县区下拉框也会根据城市更新,形成省市县的级联效果。

5. 总结

通过简单的JavaScript代码,我们可以实现省市县的连动选择功能。这种方式不仅提高了用户体验,还使得数据的组织更加清晰。希望经过本文的讲解,大家能够理解并实现这样的功能。您可以根据自己的需求扩展数据源或优化代码,以适应不同的应用场景。