JavaScript 地區的級聯菜單是一種常見的網頁交互方式。級聯菜單由一系列相互依賴的下拉框組成,選擇前一個下拉框的選項后,后面的下拉框會根據前一個選項的值來更新其可選項,從而實現動態化的選擇交互。
舉例來說,一個“省市區”級聯菜單可以分為省份(省)、城市(市)和區縣(區)三個下拉框。當用戶選擇一個省份后,城市下拉框應該顯示該省份所包含的所有城市,而區縣下拉框則應該根據所選城市來顯示相應的區縣選項。
// HTML 結構 <select id="province"> <option value="0">請選擇省份</option> <option value="1">北京市</option> <option value="2">上海市</option> <option value="3">廣東省</option> </select> <select id="city"> <option value="0">請選擇城市</option> </select> <select id="district"> <option value="0">請選擇區縣</option> </select> // JavaScript 實現 const provinceSelect = document.querySelector('#province'); const citySelect = document.querySelector('#city'); const districtSelect = document.querySelector('#district'); provinceSelect.addEventListener('change', function() { // 根據省份更新城市選項 const provinceId = parseInt(this.value); if (provinceId === 0) { citySelect.innerHTML = '<option value="0">請選擇城市</option>'; districtSelect.innerHTML = '<option value="0">請選擇區縣</option>'; return; } const cities = CITY_DATA.filter(city => city.province_id === provinceId); let cityOptions = '<option value="0">請選擇城市</option>'; for (const city of cities) { cityOptions += `<option value="${city.id}">${city.name}</option>`; } citySelect.innerHTML = cityOptions; districtSelect.innerHTML = '<option value="0">請選擇區縣</option>'; }); citySelect.addEventListener('change', function() { // 根據城市更新區縣選項 const cityId = parseInt(this.value); if (cityId === 0) { districtSelect.innerHTML = '<option value="0">請選擇區縣</option>'; return; } const districts = DISTRICT_DATA.filter(district => district.city_id === cityId); let districtOptions = '<option value="0">請選擇區縣</option>'; for (const district of districts) { districtOptions += `<option value="${district.id}">${district.name}</option>`; } districtSelect.innerHTML = districtOptions; });
上面的代碼演示了一個簡單的 JavaScript 地區級聯菜單。當用戶選擇省份時,城市下拉框會根據省份的 ID 來顯示該省的城市選項;當用戶選擇城市時,區縣下拉框也會根據城市 ID 來顯示該城市所在的區縣選項。
注意:在實際開發中,我們需要從后臺獲取城市和區縣數據,這里的 CITY_DATA 和 DISTRICT_DATA 只是示意數據。
除了上述示例,JavaScript 地區級聯菜單還有很多變種,比如用樹形結構展示地區選擇。無論采用何種方式,都應該盡可能地減少用戶的選擇成本和提高選擇準確率,以提升用戶體驗和交互效果。
上一篇email php正則
下一篇python的int32