HTML结构
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>三级联动</title> <!-- <style> select { margin: 10px 0; padding: 5px; width: 200px; } </style> --> <script src="./js/jquery-3.7.1.js"></script> </head> <body> <select id="provinceSelect"> <option value="">请选择省份</option> </select> <select id="citySelect"> <option value="">请先选择省份</option> </select> <select id="countySelect"> <option value="">请先选择省份</option> </select> <button onclick="showResult()">显示结果</button> <script src="./js/local.js"></script> </body> </html>
JS部分的jQuery写法
// 使用jQuery选择器获取省份、城市、区县选择器的DOM元素 let provinceSelect = $('#provinceSelect'); let citySelect = $('#citySelect'); let countySelect = $('#countySelect'); let data; // 用于存储省市县数据的变量 // 加载数据的函数 function loadData() { // 使用jQuery的ajax方法从JSON文件加载数据,假设文件路径为 'js/locals.json' $.ajax({ // 设置请求的文件路径为 'js/locals.json' url: 'js/localss.json', // 设置请求的数据类型为JSON dataType: 'json', // 请求成功后调用success函数处理数据 success: function (json) { // 将数据存储在全局变量data中 data = json; // 调用填充省份数据的函数 populateProvinces(); } }); } // 填充省份数据的函数 function populateProvinces() { // 清空省份选择框 provinceSelect.empty(); // 添加默认选项 provinceSelect.append($('<option value="">请选择省份</option>')); // 遍历数据中的每个省份,创建并添加一个选项元素 $.each(data, function (index, province) { // 创建一个option元素,设置其value属性为省份的索引值,text属性为省份的名称 provinceSelect.append($('<option></option>').text(province.province)); }); } // 根据选择的省份填充城市数据的函数 function populateCities(provinceIndex) { // 清空城市选择框和区县选择框 citySelect.empty(); // 添加默认选项 citySelect.append($('<option value="">请选择城市</option>')); countySelect.empty(); countySelect.append($('<option value="">请先选择城市</option>')); let cities = data[provinceIndex].cities; // 遍历城市数据,创建并添加选项元素 $.each(cities, function (index, city) { citySelect.append($('<option></option>').text(city.city)); }); } // 根据选择的城市填充区县数据的函数 function populateCounties(provinceIndex, cityIndex) { // 清空区县选择框 countySelect.empty(); countySelect.append($('<option value="">请选择区县</option>')); let counties = data[provinceIndex].cities[cityIndex].counties; // 遍历区县数据,创建并添加选项元素 $.each(counties, function (index, county) { countySelect.append($('<option></option>').text(county)); }); } // 当省份选择器的选项改变时,调用此函数 $('#provinceSelect').on('change', function () { let provinceIndex = $(this).prop('selectedIndex') - 1; // -1是因为第一个option是请选择省份 if (provinceIndex >= 0) { populateCities(provinceIndex); } else { citySelect.empty(); // 添加默认选项请选择城市 citySelect.append($('<option value="">请选择城市</option>')); countySelect.empty(); // 添加选项为请先选择区县 countySelect.append($('<option value="">请选择区县</option>')); } }); // 当城市选择器的选项改变时,调用此函数 $('#citySelect').on('change', function () { let provinceIndex = $('#provinceSelect').prop('selectedIndex') - 1; let cityIndex = $(this).prop('selectedIndex') - 1; if (cityIndex >= 0) { populateCounties(provinceIndex, cityIndex); } else { countySelect.empty(); countySelect.append($('<option value="">请选择区县</option>')); } }); // 显示选择结果的函数 function showResult() { // 获取省份、城市、区县的value值 let province = $('#provinceSelect option:selected').text(); let city = $('#citySelect option:selected').text(); let county = $('#countySelect option:selected').text(); if (province && city && county) { // 弹窗显示选择结果 alert(`您选择的结果是:${province} - ${city} - ${county}`); } } // 页面加载完成后加载数据 $(document).ready(function () { // 调用加载数据的函数 loadData(); });
带有详细注释家人们!