当前位置: 首页 > news >正文

JS省市区三级联动查询示例代码(城市查询、地区查询)

文章目录

    • 代码
    • 效果

代码

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><!-- 确保IE浏览器使用最新的渲染引擎 --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!-- 设置viewport以确保页面在移动设备上正确显示 --><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Promise链式调用示例</title><style>body {font-family: Arial, sans-serif;padding: 20px;max-width: 800px;margin: 0 auto;}select {padding: 8px;font-size: 16px;border-radius: 4px;border: 1px solid #ddd;width: 100%;margin-top: 5px;}.area-container {display: flex;flex-direction: column;gap: 15px;margin-top: 20px;}.area-item {padding: 10px;border: 1px solid #ddd;border-radius: 4px;}label {font-weight: bold;}.log {margin-top: 20px;padding: 15px;background-color: #f8f9fa;border: 1px solid #ddd;border-radius: 4px;font-family: monospace;white-space: pre-wrap;max-height: 300px;overflow: auto;}</style>
</head><body><h2>省市区三级联动查询示例</h2><div class="area-container"><div class="area-item"><label for="province">省份:</label><select id="province"></select></div><div class="area-item"><label for="city">城市:</label><select id="city" disabled></select></div><div class="area-item"><label for="area">地区:</label><select id="area" disabled></select></div></div><div class="log" id="log">日志输出:</div><!-- 引入axios库 --><script src="https://unpkg.com/axios/dist/axios.min.js"></script><script>// 添加日志输出函数function log(message) {console.log(message);const logElement = document.getElementById('log');logElement.textContent += '\n' + message;}// DOM 元素const provinceSelect = document.getElementById('province');const citySelect = document.getElementById('city');const areaSelect = document.getElementById('area');// 页面加载完成后,获取省份列表window.addEventListener('DOMContentLoaded', () => {log('页面加载完成,开始请求省份列表...');loadProvinces();});// 加载省份列表function loadProvinces() {// 清空所有下拉菜单provinceSelect.innerHTML = '<option value="">请选择省份</option>';citySelect.innerHTML = '<option value="">请选择城市</option>';areaSelect.innerHTML = '<option value="">请选择地区</option>';citySelect.disabled = true;areaSelect.disabled = true;// 发送请求获取省份列表axios({ url: 'http://hmajax.itheima.net/api/province' }).then(result => {log('获取省份列表成功');log(`省份数据: ${JSON.stringify(result.data.list)}`);// 填充省份下拉菜单result.data.list.forEach(province => {const option = document.createElement('option');option.value = province;option.textContent = province;provinceSelect.appendChild(option);});}).catch(error => {log(`获取省份列表失败: ${error.message}`);});}// 省份选择变化时,加载对应的城市列表provinceSelect.addEventListener('change', function() {const pname = this.value;if (!pname) {// 如果没有选择省份,清空并禁用城市和地区下拉菜单citySelect.innerHTML = '<option value="">请选择城市</option>';areaSelect.innerHTML = '<option value="">请选择地区</option>';citySelect.disabled = true;areaSelect.disabled = true;return;}log(`省份已选择: ${pname},开始请求城市列表...`);// 发送请求获取城市列表axios({ url: 'http://hmajax.itheima.net/api/city', params: { pname } }).then(result => {log('获取城市列表成功');log(`城市数据: ${JSON.stringify(result.data.list)}`);// 清空并填充城市下拉菜单citySelect.innerHTML = '<option value="">请选择城市</option>';result.data.list.forEach(city => {const option = document.createElement('option');option.value = city;option.textContent = city;citySelect.appendChild(option);});// 启用城市下拉菜单citySelect.disabled = false;// 清空并禁用地区下拉菜单areaSelect.innerHTML = '<option value="">请选择地区</option>';areaSelect.disabled = true;}).catch(error => {log(`获取城市列表失败: ${error.message}`);});});// 城市选择变化时,加载对应的地区列表citySelect.addEventListener('change', function() {const cname = this.value;const pname = provinceSelect.value;if (!cname) {// 如果没有选择城市,清空并禁用地区下拉菜单areaSelect.innerHTML = '<option value="">请选择地区</option>';areaSelect.disabled = true;return;}log(`城市已选择: ${cname},开始请求地区列表...`);// 发送请求获取地区列表axios({ url: 'http://hmajax.itheima.net/api/area', params: { pname, cname } }).then(result => {log('获取地区列表成功');log(`地区数据: ${JSON.stringify(result.data.list)}`);// 清空并填充地区下拉菜单areaSelect.innerHTML = '<option value="">请选择地区</option>';result.data.list.forEach(area => {const option = document.createElement('option');option.value = area;option.textContent = area;areaSelect.appendChild(option);});// 启用地区下拉菜单areaSelect.disabled = false;}).catch(error => {log(`获取地区列表失败: ${error.message}`);});});</script>
</body></html>

效果

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

相关文章:

  • SaltStack远程协助工具
  • 我用deepseek做了一个提取压缩文件夹下pdf和word文件工具
  • Java抽象类、接口和内部类介绍
  • Spring AI Alibaba Graph基于 ReAct Agent 的天气预报查询系统
  • 解决 Arduino IDE 2.3.6 在 Windows 上无法启动:缺少 Documents 文件夹与注册表路径错误
  • Spring AOP 事务
  • 【Linux专栏】zip 多个文件不带路径
  • 2025年渗透测试面试题总结-拷打题库09(题目+回答)
  • Windows1909,21H2哪个版本更稳定
  • 小刚说C语言刷题——1039 求三个数的最大数
  • 1️⃣4️⃣three.js_Stats性能监视器
  • 机器学习中,什么叫监督学习?什么叫非监督学习?
  • 25.解决中医知识问答删除历史对话功能后端处理请求时抛出异常
  • 【大数据、数据开发与数据分析面试题汇总(含答案)】
  • OpenCV训练题
  • 【Redis】Redis 特性
  • L1-1、Prompt 是什么?为什么它能“控制 AI”?
  • 爱普生TG-5006CG成为提升5G RedCap时钟同步精度的理想选择
  • ECA 注意力机制:让你的卷积神经网络更上一层楼
  • 【Pandas】pandas DataFrame sub
  • 锚定“水库不垮坝”目标,水利部部署今年水库安全度汛工作
  • 著名政治学学者、中国人民大学教授仝志敏逝世
  • 深化应用型人才培养,这所高校聘任行业企业专家深度参与专业设置
  • 泽连斯基:俄军违反停火承诺,20日10时起前线俄炮击增加
  • 玉渊谭天丨这是一个时代的结束
  • 东北三省,十年少了一个“哈尔滨”