本文介绍基于 JavaScript 实现的省市二级联动算法,通过动态操作 DOM 元素实现省、市、县下拉框的级联选择。文章提供完整 HTML 与 JS 代码示例,展示如何利用 jQuery 简化开发,并推荐相关 JavaScript 技巧专题供深入学习。
JavaScript 省市二级联动实现
本文详细介绍一种利用 JavaScript 编写的级联选择算法,旨在帮助开发者理解并掌握相关实现逻辑,供参考学习。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>LinkDemo</title>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
</script>
<script type="text/javascript">
var shengshiString = "1_山东省-11_德州市+12_青岛市+13_济南市~2_河北省-21_邯郸市*211_临漳县/212_磁县+22_石家庄市*221_定县/222_宁县+23_保定市";
$(document).ready(function(){
init();
});
function init(){
var shengArray = shengshiString.split("~");
for (var i = 0; i < shengArray.length; i++) {
var sheng = shengArray[i].split("-")[0];
var shi = shengArray[i].split("-")[1];
var shengid = sheng.split("_")[0];
var shengName = sheng.split("_")[1];
var Newoption = $("<option></option>");
$(Newoption).val(shengid);
$(Newoption).text(shengName);
$("#sheng").append(Newoption);
if (i == 0) {
shengchange(shengid);
}
}
}
function shengchange(shengidparam){
$("#shi").empty();
var shengArray = shengshiString.split("~");
for (var i = 0; i < shengArray.length; i++) {
var shengString = shengArray[i].split("-")[0];
var shiString = shengArray[i].split("-")[1];
var shengId = shengString.split("_")[0];
if (shengidparam == shengId) {
var shiArray = shiString.split("+");
for (var j = 0; j < shiArray.length; j++) {
var shistring = shiArray[j].split("*")[0];
var shi = shistring;
var shiId = shi.split("_")[0];
var shiName = shi.split("_")[1];
var Newoption = $("<option></option>");
$(Newoption).val(shiId);
$(Newoption).text(shiName);
$("#shi").append(Newoption);
if (shiName == "邯郸市" || shiName == "石家庄市") {
shichange(shiId);
}
}
}
}
}
function shichange(shiidparam){
$("#xian").empty();
var shengArray = shengshiString.split("~");
for (var i = 0; i < shengArray.length; i++) {
var shengString = shengArray[i].split("-")[0];
var shiString = shengArray[i].split("-")[1];
var shengId = shengString.split("_")[0];
var shiArray = shiString.split("+");
for (var j = 0; j < shiArray.length; j++) {
var shistring = shiArray[j].split("*")[0];
var xianarray = shiArray[j].split("*")[1];
var shi = shistring;
var shiId = shi.split("_")[0];
var shiName = shi.split("_")[1];
if (shiId == shiidparam) {
var xian = xianarray.split("/");
for (var s = 0; s < xian.length; s++) {
var xianId = xian[s].split("_")[0];
var xianName = xian[s].split("_")[1];
var Newoption = $("<option></option>");
$(Newoption).val(xianId);
$(Newoption).text(xianName);
$("#xian").append(Newoption);
}
}
}
}
}
</script>
</head>
<body>
<select id="sheng" onchange="shengchange(this.value)">
</select>
<select id="shi" onchange="shichange(this.value)">
</select>
<select id="xian">
</select>
</body>
</html>
建议通过在线 HTML/CSS/JavaScript 代码运行工具(如 http://tools.jb51.net/code/HtmlJsRun)对提供的代码进行测试,运行后的界面效果可参考下方截图。

若需进一步了解 JavaScript 其他实用技巧,可查阅本站相关专题,包括《JavaScript 操作 DOM 技巧总结》、《JavaScript 数组操作技巧总结》、《JavaScript 排序算法总结》、《JavaScript 遍历算法与技巧总结》、《JavaScript 数学运算用法总结》、《JavaScript 数据结构与算法技巧总结》、《JavaScript 查找算法技巧总结》以及《JavaScript 错误与调试技巧总结》。
期望本文所述内容能对从事 JavaScript 程序设计的读者提供实际帮助。