当前位置:首页 > JavaScript

js实现省市联动

2026-04-04 05:27:59JavaScript

实现省市联动的核心思路

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

数据结构设计

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

js实现省市联动

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

HTML结构

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

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

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

JavaScript实现逻辑

  1. 初始化省份下拉菜单

    js实现省市联动

    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) }) } })


### 完整代码示例

```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实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…

js实现导航菜单

js实现导航菜单

使用HTML和CSS创建基础结构 导航菜单的基础结构通常由HTML的无序列表(<ul>)和列表项(<li>)组成,每个列表项包含一个链接(<a>)。CSS用于样式化…

js实现复选框

js实现复选框

实现复选框的基本方法 使用HTML的<input type="checkbox">元素创建复选框,并通过JavaScript监听其状态变化。 <input type="checkb…

js实现菜单导航

js实现菜单导航

实现基础菜单导航结构 使用HTML和CSS创建菜单的基本结构,再通过JavaScript添加交互功能。HTML部分通常使用<ul>和<li>标签构建层级: <nav i…