在Web开发中,三级联动通常指的是三个下拉菜单之间的交互,其中一个菜单的选择会影响其他菜单的选项。常见的应用场景包括地区选择(省、市、区)、商品分类等。
三级联动涉及三个下拉菜单,通常按以下方式工作:
常见的三级联动实现方式包括:
以下是一个使用JavaScript实现静态数据三级联动的示例:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>三级联动示例</title>
</head>
<body>
<select id="province">
<option value="">请选择省份</option>
<option value="北京">北京</option>
<option value="上海">上海</option>
<option value="广东">广东</option>
</select>
<select id="city" disabled>
<option value="">请选择城市</option>
</select>
<select id="district" disabled>
<option value="">请选择区</option>
</select>
<script>
const data = {
"北京": {
"北京市": ["东城区", "西城区", "朝阳区"]
},
"上海": {
"上海市": ["黄浦区", "徐汇区", "长宁区"]
},
"广东": {
"广州市": ["越秀区", "天河区", "海珠区"],
"深圳市": ["福田区", "南山区", "宝安区"]
}
};
const provinceSelect = document.getElementById('province');
const citySelect = document.getElementById('city');
const districtSelect = document.getElementById('district');
provinceSelect.addEventListener('change', function() {
const province = this.value;
citySelect.innerHTML = '<option value="">请选择城市</option>';
districtSelect.innerHTML = '<option value="">请选择区</option>';
districtSelect.disabled = true;
if (province && data[province]) {
citySelect.disabled = false;
for (let city in data[province]) {
const option = document.createElement('option');
option.value = city;
option.textContent = city;
citySelect.appendChild(option);
}
} else {
citySelect.disabled = true;
districtSelect.disabled = true;
}
});
citySelect.addEventListener('change', function() {
const province = provinceSelect.value;
const city = this.value;
districtSelect.innerHTML = '<option value="">请选择区</option>';
if (province && city && data[province][city]) {
districtSelect.disabled = false;
data[province][city].forEach(district => {
const option = document.createElement('option');
option.value = district;
option.textContent = district;
districtSelect.appendChild(option);
});
} else {
districtSelect.disabled = true;
}
});
</script>
</body>
</html>
三级联动通过合理管理下拉菜单之间的依赖关系,提升用户体验和界面交互性。实现时需注意数据的层级结构和事件处理的逻辑,确保各下拉菜单能够根据用户选择正确更新。