javascript
const cities = [
{ province: '北京市', city: '北京市' },
{ province: '上海市', city: '上海市' },
{ province: '广东省', city: '广州市' },
{ province: '广东省', city: '深圳市' },
{ province: '江苏省', city: '南京市' },
{ province: '江苏省', city: '苏州市' },
// 其他省市数据...
];
2. 在HTML中创建一个省市选择器的表单,如下所示:
html <form> <label for="province">省份:</label> <select id="province"></select> <label for="city">城市:</label> <select id="city"></select> </form>3. 在JavaScript中动态生成省份选项,如下所示:
javascript
const provinceSelect = document.getElementById('province');
const provinces = [...new Set(cities.map(city => city.province))]; // 获取所有不重复的省份
provinces.forEach(province => {
const option = document.createElement('option');
option.value = province;
option.text = province;
provinceSelect.appendChild(option);
});
4. 监听省份选择器的change事件,动态生成城市选项,如下所示:
javascript
const citySelect = document.getElementById('city');
provinceSelect.addEventListener('change', () => {
// 先清空城市选项
citySelect.innerHTML = '';
// 获取选中的省份
const selectedProvince = provinceSelect.value;
// 获取该省份下的城市
const citiesInProvince = cities.filter(city => city.province === selectedProvince);
// 动态生成城市选项
citiesInProvince.forEach(city => {
const option = document.createElement('option');
option.value = city.city;
option.text = city.city;
citySelect.appendChild(option);
});
});
完整的代码如下所示:
javascript
const cities = [
{ province: '北京市', city: '北京市' },
{ province: '上海市', city: '上海市' },
{ province: '广东省', city: '广州市' },
{ province: '广东省', city: '深圳市' },
{ province: '江苏省', city: '南京市' },
{ province: '江苏省', city: '苏州市' },
// 其他省市数据...
];
const provinceSelect = document.getElementById('province');
const citySelect = document.getElementById('city');
const provinces = [...new Set(cities.map(city => city.province))]; // 获取所有不重复的省份
provinces.forEach(province => {
const option = document.createElement('option');
option.value = province;
option.text = province;
provinceSelect.appendChild(option);
});
provinceSelect.addEventListener('change', () => {
// 先清空城市选项
citySelect.innerHTML = '';
// 获取选中的省份
const selectedProvince = provinceSelect.value;
// 获取该省份下的城市
const citiesInProvince = cities.filter(city => city.province === selectedProvince);
// 动态生成城市选项
citiesInProvince.forEach(city => {
const option = document.createElement('option');
option.value = city.city;
option.text = city.city;
citySelect.appendChild(option);
});
});
MDN Web Docs: Building a custom select menu