HTML三级联动

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>三级联动</title>

</head>
<body>
<select onchange="_show(this)"></select>省
<select onchange="_xian(this)"></select>市
<select></select>县
</body>
</html>
<script>
var s = ["四川","福建"];
var ds = [["成都","绵阳","广安","德阳","南充"],["厦门","莆田","福州","泉州"]];
var xian = [[["金堂","成华"],["金堂","成华"],["金堂","成华"],["金堂","成华"],["金堂","成华"]],[["金堂","成华"],["金堂","成华"],["金堂","成华"],["金堂","成华"]]];
//得到省的下拉对象
var sheng = document.getElementsByTagName("select")[0];
for(var i =0;i<s.length;i++){
var op = document.createElement("option");//创建元素节点
op.setAttribute("value",i);//设置元素节点的 属性
var tx = document.createTextNode(s[i]);//创建文本节点
op.appendChild(tx);//把文本节点放在元素节点中
sheng.appendChild(op);//把元素节点放在select对象中

}

//这个方法是生产地市下拉列表的,但是是有省的下来修改之后触发
function _show (obj) {
var sVal = obj.value;//得到省的编码值
//得到市的select对象
var shi = document.getElementsByTagName("select")[1];
shi.innerText = "";//?偷懒

//通过省的编码,得到市的一维 数组,在循环一维数组
for(var i =0;i<ds[sVal].length;i++){
var op = document.createElement("option");//创建元素节点
op.setAttribute("value",""+sVal+i);//设置元素节点的 属性
var tx = document.createTextNode(ds[sVal][i]);//创建文本节点
op.appendChild(tx);//把文本节点放在元素节点中
shi.appendChild(op);//把元素节点放在select对象中
}
}


function _xian (obj) {
var sVal = obj.value;//得到市的编码值
//得到市的select对象
var x = document.getElementsByTagName("select")[2];
x.innerText = "";//?偷懒

var sheng = Math.round(sVal/10,0);
var shi = sVal%10;
//通过省的编码,得到市的一维 数组,在循环一维数组

for(var i =0;i<xian[sheng][shi].length;i++){

var op = document.createElement("option");//创建元素节点

op.setAttribute("value",""+sVal+i);//设置元素节点的 属性
var tx = document.createTextNode(xian[sheng][shi][i]);//创建文本节点
op.appendChild(tx);//把文本节点放在元素节点中
x.appendChild(op);//把元素节点放在select对象中
}
}
</script>
HTML三级联动下拉菜单可以通过JavaScript实现。以下是一个简单的实现方案: HTML部分: ```html <select id="province"> <option value="">请选择省份</option> <option value="1">浙江省</option> <option value="2">江苏省</option> </select> <select id="city"> <option value="">请选择城市</option> </select> <select id="area"> <option value="">请选择区县</option> </select> ``` JavaScript部分: ```javascript var cityData = { "1": { "name": "浙江省", "city": { "101": "杭州市", "102": "宁波市", "103": "温州市" } }, "2": { "name": "江苏省", "city": { "201": "南京市", "202": "苏州市", "203": "无锡市" } } }; var province = document.getElementById("province"); var city = document.getElementById("city"); var area = document.getElementById("area"); province.addEventListener("change", function() { var provinceValue = this.value; var cityOptions = "<option value=''>请选择城市</option>"; var areaOptions = "<option value=''>请选择区县</option>"; if (provinceValue !== "") { var cities = cityData[provinceValue]["city"]; for (var code in cities) { cityOptions += "<option value='" + code + "'>" + cities[code] + "</option>"; } } city.innerHTML = cityOptions; area.innerHTML = areaOptions; }); city.addEventListener("change", function() { var cityValue = this.value; var areaOptions = "<option value=''>请选择区县</option>"; if (cityValue !== "") { // 根据城市编码获取区县列表 // ... } area.innerHTML = areaOptions; }); ``` 以上代码实现了一个简单的省市区三级联动下拉菜单。当选择省份时,根据省份编码获取城市列表,并更新城市下拉菜单;当选择城市时,根据城市编码获取区县列表,并更新区县下拉菜单。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值