当前位置:首页 > 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 实现城市列表排序 数据准备 确保城市数据以数组形式存储,每个城市对象包含名称或其他排序依据的字段。例如: data() { return { cities: [ {…

react实现城市下拉组件

react实现城市下拉组件

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

vue实现城市定位

vue实现城市定位

获取用户地理位置 使用浏览器的Geolocation API获取用户当前的经纬度坐标。Vue中可以封装为一个方法,返回Promise以便异步处理。 methods: { getCurrentPo…

vue实现城市索引列表

vue实现城市索引列表

实现城市索引列表的步骤 数据准备 城市数据通常以数组形式存储,每个城市对象包含名称和拼音首字母。例如: const cities = [ { name: '北京', pinyin: 'bj' }…

vue实现城市模糊查询

vue实现城市模糊查询

Vue 实现城市模糊查询 数据准备 准备城市数据列表,可以存储在组件的 data 中或通过 API 获取。例如: data() { return { cities: ['北京', '上海…