当前位置:首页 > JavaScript

js实现省份城市

2026-02-03 07:03:16JavaScript

实现省份城市联动选择

数据结构设计

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

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

HTML结构

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

js实现省份城市

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

初始化省份选项

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

js实现省份城市

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代码
  • 处理空选择情况
  • 考虑添加默认提示选项
  • 移动端适配需要考虑触摸体验

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

相关文章

vue实现城市选项

vue实现城市选项

Vue 实现城市选择功能 使用 Vue 实现城市选择功能可以通过多种方式完成,常见方法包括使用现成的 UI 组件库或自定义实现。以下是几种常见方法: 使用 Element UI 的 Cascader…

vue实现城市定位

vue实现城市定位

Vue 实现城市定位的方法 使用浏览器原生 Geolocation API 通过浏览器内置的 navigator.geolocation 获取用户经纬度,再调用逆地理编码服务转换为城市信息。 //…

php实现城市跳转

php实现城市跳转

实现城市跳转的方法 使用用户IP定位 通过获取用户的IP地址,结合IP定位服务(如高德地图API、百度地图API或第三方IP库)确定用户所在城市,然后跳转到对应城市的页面。 // 获取用户IP $i…

vue实现热门城市

vue实现热门城市

实现热门城市功能 在Vue中实现热门城市功能,可以通过数据驱动的方式结合UI组件完成。以下是几种常见实现方式: 数据准备 定义热门城市数据数组,通常在组件的data或Vuex/store中管理:…

vue实现城市列表

vue实现城市列表

Vue 实现城市列表 数据结构设计 使用数组存储城市数据,每个城市对象包含 id、name 等字段: const cities = [ { id: 1, name: '北京' }, { id…