以下是一个简单的城市选择三级联动实现。

HTML 代码:

<select id='province'>
  <option value=''>请选择省份</option>
  <option value='北京市'>北京市</option>
  <option value='上海市'>上海市</option>
  <option value='广东省'>广东省</option>
  <!-- 其他省份选项 -->
</select>
<select id='city'>
  <option value=''>请选择城市</option>
</select>
<select id='district'>
  <option value=''>请选择区县</option>
</select>

JavaScript 代码:

//省份数据
var provinceData = [
  {
    name: '北京市',
    city: [
      {
        name: '北京市',
        district: [
          '东城区',
          '西城区',
          '朝阳区',
          '丰台区',
          '石景山区',
          '海淀区',
          '门头沟区',
          '房山区',
          '通州区',
          '顺义区',
          '昌平区',
          '大兴区',
          '怀柔区',
          '平谷区',
          '密云区',
          '延庆区'
        ]
      }
    ]
  },
  {
    name: '上海市',
    city: [
      {
        name: '上海市',
        district: [
          '黄浦区',
          '徐汇区',
          '长宁区',
          '静安区',
          '普陀区',
          '虹口区',
          '杨浦区',
          '闵行区',
          '宝山区',
          '嘉定区',
          '浦东新区',
          '金山区',
          '松江区',
          '青浦区',
          '奉贤区',
          '崇明区'
        ]
      }
    ]
  },
  {
    name: '广东省',
    city: [
      {
        name: '广州市',
        district: [
          '荔湾区',
          '越秀区',
          '海珠区',
          '天河区',
          '白云区',
          '黄埔区',
          '番禺区',
          '花都区',
          '南沙区',
          '增城区',
          '从化区'
        ]
      },
      {
        name: '深圳市',
        district: [
          '罗湖区',
          '福田区',
          '南山区',
          '宝安区',
          '龙岗区',
          '盐田区'
        ]
      },
      {
        name: '珠海市',
        district: [
          '香洲区',
          '斗门区',
          '金湾区'
        ]
      },
      // 其他城市及区县
    ]
  },
  // 其他省份数据
];

//省份下拉框
var provinceSelect = document.getElementById('province');
//城市下拉框
var citySelect = document.getElementById('city');
//区县下拉框
var districtSelect = document.getElementById('district');

//初始化省份下拉框
for (var i = 0; i < provinceData.length; i++) {
  var option = document.createElement('option');
  option.value = provinceData[i].name;
  option.innerText = provinceData[i].name;
  provinceSelect.appendChild(option);
}

//省份下拉框改变事件
provinceSelect.onchange = function () {
  //清空城市、区县下拉框
  citySelect.innerHTML = '<option value="">请选择城市</option>';
  districtSelect.innerHTML = '<option value="">请选择区县</option>';
  //获取选中的省份名称
  var provinceName = this.value;
  //查找省份数据
  for (var i = 0; i < provinceData.length; i++) {
    if (provinceData[i].name === provinceName) {
      //初始化城市下拉框
      for (var j = 0; j < provinceData[i].city.length; j++) {
        var option = document.createElement('option');
        option.value = provinceData[i].city[j].name;
        option.innerText = provinceData[i].city[j].name;
        citySelect.appendChild(option);
      }
      break;
    }
  }
};

//城市下拉框改变事件
citySelect.onchange = function () {
  //清空区县下拉框
  districtSelect.innerHTML = '<option value="">请选择区县</option>';
  //获取选中的城市名称
  var cityName = this.value;
  //查找省份数据
  for (var i = 0; i < provinceData.length; i++) {
    for (var j = 0; j < provinceData[i].city.length; j++) {
      if (provinceData[i].city[j].name === cityName) {
        //初始化区县下拉框
        for (var k = 0; k < provinceData[i].city[j].district.length; k++) {
          var option = document.createElement('option');
          option.value = provinceData[i].city[j].district[k];
          option.innerText = provinceData[i].city[j].district[k];
          districtSelect.appendChild(option);
        }
        break;
      }
    }
  }
};

实现效果:

当选择省份时,城市下拉框将显示对应省份的城市选项,区县下拉框将清空。当选择城市时,区县下拉框将显示对应城市的区县选项。

三级联动城市选择器:JavaScript 实现省市区联动

原文地址: https://www.cveoy.top/t/topic/m8Uv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录