当前位置:首页 > JavaScript

js实现省市联动

2026-04-04 05:27:59JavaScript

实现省市联动的核心思路

省市联动通常通过两级下拉菜单实现,选择省份后动态加载对应的城市列表。需要准备层级数据,并通过事件监听实现动态更新。

数据结构设计

使用对象存储省市数据,键为省份名称,值为该省对应的城市数组:

const provinceCityData = {
  "北京市": ["东城区", "西城区", "朝阳区"],
  "上海市": ["黄浦区", "徐汇区", "长宁区"],
  "广东省": ["广州市", "深圳市", "珠海市"]
}

HTML结构

创建两个select元素分别用于选择省份和城市:

<select id="province">
  <option value="">请选择省份</option>
</select>

<select id="city">
  <option value="">请选择城市</option>
</select>

JavaScript实现逻辑

  1. 初始化省份下拉菜单

    const provinceSelect = document.getElementById('province')
    Object.keys(provinceCityData).forEach(province => {
    const option = document.createElement('option')
    option.value = province
    option.textContent = province
    provinceSelect.appendChild(option)
    })
  2. 监听省份选择变化

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

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

js实现省市联动


### 完整代码示例

```html
<!DOCTYPE html>
<html>
<head>
  <title>省市联动示例</title>
</head>
<body>
  <select id="province">
    <option value="">请选择省份</option>
  </select>

  <select id="city">
    <option value="">请选择城市</option>
  </select>

  <script>
    const provinceCityData = {
      "北京市": ["东城区", "西城区", "朝阳区"],
      "上海市": ["黄浦区", "徐汇区", "长宁区"],
      "广东省": ["广州市", "深圳市", "珠海市"]
    }

    const provinceSelect = document.getElementById('province')
    Object.keys(provinceCityData).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 selectedProvince = this.value
      if (selectedProvince) {
        provinceCityData[selectedProvince].forEach(city => {
          const option = document.createElement('option')
          option.value = city
          option.textContent = city
          citySelect.appendChild(option)
        })
      }
    })
  </script>
</body>
</html>

优化建议

  1. 数据量较大时建议从后端API异步加载
  2. 可添加本地存储功能记忆用户上次选择
  3. 考虑使用框架如Vue/React实现更简洁的响应式版本
  4. 添加默认选中项或自动选择第一个城市等增强体验功能

标签: 省市js
分享给朋友:

相关文章

js 实现vue模板

js 实现vue模板

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

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…