当前位置:编程学习 > JS >>

JS 实现地区,省份,城市,县区4级联动

刚学JS,实战一下,做一个省份信息4级联动。

但是网上查了都是3级的,没有4级,现在做一个的是带地区的4级联动,最简单的办法是修改别人的代码,最开始找到的事类似于下边这个的:

 


 

 省市县关联菜单
                   
<html> 
<head> 
<title>省市县关联菜单</title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 

<SCRIPT LANGUAGE="JavaScript"> 
<!-- 
function Dsy() 
{ 
	this.Items = {}; 
} 
Dsy.prototype.add = function(id,iArray) 
{ 
	this.Items[id] = iArray; 
} 
Dsy.prototype.Exists = function(id) 
{ 
	if(typeof this.Items[id] == "undefined") return false; 
	return true; 
} 

function change(v){ 
	var str="0"; 
	for(i=0;i<v;i++)
	{
		str+=("_"+(document.getElementById(s[i]).selectedIndex-1));
	} 
	var ss=document.getElementById(s[v]); 
	
	with(ss){ 
		length = 0; 
		options[0]=new Option(opt0[v],opt0[v]); 
		if(v && document.getElementById(s[v-1]).selectedIndex>0 || !v) 
		{ 
			if(dsy.Exists(str))
			{ 
				ar = dsy.Items[str]; 
				for(i=0;i<ar.length;i++)
					options[length]=new Option(ar[i],ar[i]); 
				if(v)
					options[1].selected = true; 
			} 
		} 
		if(++v<s.length)
		{
		change(v);
		} 
	} 
} 

var dsy = new Dsy(); 
{
dsy.add("0",["华东地区","华南地区","华中地区","华北地区","西北地区","西南地区","东北地区","台港澳地区"]);

dsy.add("0_0",["山东","江苏","安徽","浙江","福建","上海"]);

dsy.add("0_0_0",["滨州","德州","东营","菏泽","济南","济宁","莱芜","聊城","临沂","青岛","日照","泰安","威海","潍坊","烟台","枣庄","淄博"]);
dsy.add("0_0_0_0",["滨州市","博兴县","惠民县","无棣县","阳信县","沾化县","邹平县"]); 
dsy.add("0_0_0_1",["德州市","乐陵市","临邑县","陵县","宁津县","平原县","齐河县","庆云县","武城县","夏津县","禹城市"]); 
dsy.add("0_0_0_2",["东营市","广饶县","垦利县","利津县"]); 
dsy.add("0_0      ......省略掉数据(要不太多了)
}
//--> 
</SCRIPT> 
<SCRIPT LANGUAGE = JavaScript> 
<!-- 
//** Power by Fason(2004-3-11) 
//** Email:fason_pfx@hotmail.com 

var s=["s0","s1","s2","s3"]; 
var opt0 = ["地区","省份","地级市","市、县级市、县"]; 
function setup() 
{ 
	for(i=0;i<s.length-1;i++) 
		document.getElementById(s[i]).onchange=new Function("change("+(i+1)+")"); 
	change(0); 
} 
//--> 
</SCRIPT> 
</head> 
<body  onload="setup()"> 
多级关联菜单: 
<form name="frm">
<select id="s0"><option>地区</option></select>
<select id="s1"><option>省份</option></select> 
<select id="s2"><option>地级市</option></select> 
<select id="s3"><option>市、县级市、县</option></select> 
</form> 
</body> 
</html>   

 


虽然原理是看懂了,修改为4级地区联动发现数据有问题,只有县级,连区没有。好吧,这个是在百度文库里找的,标题是最详细的省市县3级联动。。。然后,改完之后发现被坑了。没办法啊,重新找吧,然后就找到了还算是基本比较全的数据,然后就开始改了:

 下面这个是按照地域划分的区所做的4级联动修改:


HTML代码如下:

<!DOCTYPE html>
<html>
<head>
    <title>纯JS省市区联动</title>
    <script type="text/javascript" src="jsAddress.js"></script>
</head>
<body>
<div>
地区:<select id="area"></select>
省:<select id="cmbProvince"></select>
市:<select id="cmbCity"></select>
区:<select id="cmbArea"></select>
<br /><br />

<script type="text/javascript">
	addressInit('area','cmbProvince','cmbCity','cmbArea','西北地区', '北京', '市辖区', '东城区');
	//addressInit('Select1', 'Select2', 'Select3');
</script>
</div>
</body>
</html>


 

补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,