当前位置:首页 > JavaScript

js实现省份城市

2026-02-03 07:03:16JavaScript

实现省份城市联动选择

数据结构设计

使用嵌套对象或数组存储省份和城市数据,例如:

const provinceData = {
  "广东省": ["广州市", "深圳市", "珠海市"],
  "江苏省": ["南京市", "苏州市", "无锡市"],
  "浙江省": ["杭州市", "宁波市", "温州市"]
};

HTML结构

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

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

初始化省份选项

页面加载时填充省份下拉框:

const provinceSelect = document.getElementById('province');
Object.keys(provinceData).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 = ''; // 清空现有城市选项

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

完整实现示例

document.addEventListener('DOMContentLoaded', function() {
  const provinceData = {
    "广东省": ["广州市", "深圳市", "珠海市"],
    "江苏省": ["南京市", "苏州市", "无锡市"],
    "浙江省": ["杭州市", "宁波市", "温州市"]
  };

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

  // 初始化省份
  Object.keys(provinceData).forEach(province => {
    const option = document.createElement('option');
    option.value = province;
    option.textContent = province;
    provinceSelect.appendChild(option);
  });

  // 省份变更事件
  provinceSelect.addEventListener('change', function() {
    citySelect.innerHTML = '<option value="">--请选择城市--</option>';

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

  // 触发初始change事件
  provinceSelect.dispatchEvent(new Event('change'));
});

优化建议

对于大量数据可以考虑以下优化:

  • 使用AJAX异步加载数据
  • 添加缓存机制
  • 实现搜索功能
  • 使用第三方库如jQuery或Select2增强用户体验

注意事项

  • 确保DOM加载完成后再执行JavaScript代码
  • 处理空选择情况
  • 考虑添加默认提示选项
  • 移动端适配需要考虑触摸体验

js实现省份城市

标签: 省份城市
分享给朋友:

相关文章

vue实现搜索城市

vue实现搜索城市

Vue 实现搜索城市功能 数据准备 在Vue组件中定义一个城市列表数组和一个搜索关键词变量。城市列表可以静态定义或通过API动态获取。 data() { return { cities:…

react实现城市下拉组件

react实现城市下拉组件

实现城市下拉组件 使用React实现城市下拉组件可以通过以下步骤完成。该组件允许用户从下拉列表中选择城市,并支持搜索和过滤功能。 安装依赖 确保项目已经安装了React和必要的依赖。如果需要使用第三…

js实现城市的

js实现城市的

城市选择功能的实现方法 使用下拉菜单实现城市选择 创建HTML的select元素配合JavaScript动态加载城市数据,适用于简单的城市选择场景。 <select id="city-sele…