现在存在一个上下级的关系,只有两个级别。
比如:省份、城市。
我要做两个下拉列表,省份下拉列表里的值改变以后,城市下拉列表里的内容要动态变化成该省的城市。
但是现在有个难题就是,当我选择了一个省份以后,怎么知道它有哪些市。
我本来想通过ajax去数据库动态查询的,但是为了减轻数据库和服务器的压力,以及考虑到响应速度,所以放弃了。
那我想现在就只有一种办法了,将这种对应关系存在页面上。
请教大家如何看待这个问题!谢谢!
比如:省份、城市。
我要做两个下拉列表,省份下拉列表里的值改变以后,城市下拉列表里的内容要动态变化成该省的城市。
但是现在有个难题就是,当我选择了一个省份以后,怎么知道它有哪些市。
我本来想通过ajax去数据库动态查询的,但是为了减轻数据库和服务器的压力,以及考虑到响应速度,所以放弃了。
那我想现在就只有一种办法了,将这种对应关系存在页面上。
请教大家如何看待这个问题!谢谢!
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<script language="javascript">
var stroption=["武汉-宜昌-黄石","长沙-顺水","南京-无锡-南通"];
function setOption(){
var index=document.getElementById("fcity").selectedIndex;
var sel=document.getElementById("scity");
sel.innerHTML="";
var str=stroption[index-1].split("-");
for(var i=0;i<str.length;i++){
sel.options.add(new Option(str[i], str[i] ));
}
}
</script>
<body>
省份:<select id="fcity" onChange="setOption();">
<option value="">请选择身份</option>
<option value="湖北">湖北</option>
<option value="湖南">湖南</option>
<option value="江苏">江苏</option>
</select>城市:
<select id="scity"></select></html>
** 功能:省市联动js类
** 作者:胡成洪
** 日期:2010-06-10
**/
function __ProvinceAndCityClass()
{
//省
this.ProvinceList=["北京市","天津市","上海市","重庆市","河北省","山西省","台湾省","辽宁省","吉林省","黑龙江省","江苏省", "浙江省","安徽省","福建省","江西省","山东省",
"河南省","湖北省","湖南省","广东省","甘肃省","四川省","贵州省","海南省","云南省","青海省","陕西省","广西","西藏","宁夏","新疆","内蒙","澳门","香港","国外与其它"];
//市
this.CityList=
[
["北京市"],["天津市"],["上海市"],["重庆市"],
["石家庄市","唐山市","秦皇岛市","邯郸市","邢台市","保定市","张家口市","承德市","沧州市","廊坊市","衡水市"],
["太原市","大同市","阳泉市","长治市","晋城市","朔州市","晋中市","运城市","忻州市","临汾市","吕梁市"],
["台北市","高雄市","基隆市","台中市","台南市","新竹市","嘉义市","台北县","宜兰县","桃园县","新竹县","苗栗县","台中县","彰化县","南投县","云林县","嘉义县","台南县","高雄县","屏东县","澎湖县","台东县","花莲县"],
["沈阳市","大连市","鞍山市","抚顺市","本溪市","丹东市","锦州市","营口市","阜新市","辽阳市","盘锦市","铁岭市","朝阳市","葫芦岛市"],
["长春市","吉林市","四平市","辽源市","通化市","白山市","松原市","白城市","延边朝鲜族自治州"],
["哈尔滨市","齐齐哈尔市","鹤岗市","双鸭山市","鸡西市","大庆市","伊春市","牡丹江市","佳木斯市","七台河市","黑河市","绥化市","大兴安岭地区"],
["南京市","无锡市","徐州市","常州市","苏州市","南通市","连云港市","淮安市","盐城市","扬州市","镇江市","泰州市","宿迁市"],
["杭州市","宁波市","温州市","嘉兴市","湖州市","绍兴市","金华市","衢州市","舟山市","台州市","丽水市"],
["合肥市","芜湖市","蚌埠市","淮南市","马鞍山市","淮北市","铜陵市","安庆市","黄山市","滁州市","阜阳市","宿州市","巢湖市","六安市","亳州市","池州市","宣城市"],
["福州市","厦门市","莆田市","三明市","泉州市","漳州市","南平市","龙岩市","宁德市"],
["南昌市","景德镇市","萍乡市","九江市","新余市","鹰潭市","赣州市","吉安市","宜春市","抚州市","上饶市"],
["济南市","青岛市","淄博市","枣庄市","东营市","烟台市","潍坊市","济宁市","泰安市","威海市","日照市","莱芜市","临沂市","德州市","聊城市","滨州市","菏泽市"],
["郑州市","开封市","洛阳市","平顶山市","安阳市","鹤壁市","新乡市","焦作市","濮阳市","许昌市","漯河市","三门峡市","南阳市","商丘市","信阳市","周口市","驻马店市","济源市"],
["武汉市","黄石市","十堰市","荆州市","宜昌市","襄樊市","鄂州市","荆门市","孝感市","黄冈市","咸宁市","随州市","仙桃市","天门市","潜江市","神农架林区","恩施土家族苗族自治州"],
["长沙市","株洲市","湘潭市","衡阳市","邵阳市","岳阳市","常德市","张家界市","益阳市","郴州市","永州市","怀化市","娄底市","湘西土家族苗族自治州"],
["广州市","深圳市","珠海市","汕头市","韶关市","佛山市","江门市","湛江市","茂名市","肇庆市","惠州市","梅州市","汕尾市","河源市","阳江市","清远市","东莞市","中山市","潮州市","揭阳市","云浮市"],
["兰州市","金昌市","白银市","天水市","嘉峪关市","武威市","张掖市","平凉市","酒泉市","庆阳市","定西市","陇南市","临夏回族自治州","甘南藏族自治州"],
["成都市","自贡市","攀枝花市","泸州市","德阳市","绵阳市","广元市","遂宁市","内江市","乐山市","南充市","眉山市","宜宾市","广安市","达州市","雅安市","巴中市","资阳市","阿坝藏族羌族自治州","甘孜藏族自治州","凉山彝族自治州"],
["贵阳市","六盘水市","遵义市","安顺市","铜仁地区","毕节地区","黔西南布依族苗族自治州","黔东南苗族侗族自治州","黔南布依族苗族自治州"],
["海口市","三亚市","五指山市","琼海市","儋州市","文昌市","万宁市","东方市","澄迈县","定安县","屯昌县","临高县","白沙黎族自治县","昌江黎族自治县","乐东黎族自治县","陵水黎族自治县","保亭黎族苗族自治县","琼中黎族苗族自治县"],
["昆明市","曲靖市","玉溪市","保山市","昭通市","丽江市","思茅市","临沧市","文山壮族苗族自治州","红河哈尼族彝族自治州","西双版纳傣族自治州","楚雄彝族自治州","大理白族自治州","德宏傣族景颇族自治州","怒江傈傈族自治州","迪庆藏族自治州"],
["西宁市","海东地区","海北藏族自治州","黄南藏族自治州","海南藏族自治州","果洛藏族自治州","玉树藏族自治州","海西蒙古族藏族自治州"],
["西安市","铜川市","宝鸡市","咸阳市","渭南市","延安市","汉中市","榆林市","安康市","商洛市"],
["南宁市","柳州市","桂林市","梧州市","北海市","防城港市","钦州市","贵港市","玉林市","百色市","贺州市","河池市","来宾市","崇左市"],
["拉萨市","那曲地区","昌都地区","山南地区","日喀则地区","阿里地区","林芝地区"],
["银川市","石嘴山市","吴忠市","固原市","中卫市"],
["乌鲁木齐市","克拉玛依市","石河子市 ","阿拉尔市","图木舒克市","五家渠市","吐鲁番市","阿克苏市","喀什市","哈密市","和田市","阿图什市","库尔勒市","昌吉市 ","阜康市","米泉市","博乐市","伊宁市","奎屯市","塔城市","乌苏市","阿勒泰市"],
["呼和浩特市","包头市","乌海市","赤峰市","通辽市","鄂尔多斯市","呼伦贝尔市","巴彦淖尔市","乌兰察布市","锡林郭勒盟","兴安盟","阿拉善盟"],
["澳门"],
["香港"],
["国外或其它"]
];
this.selectProvince = null;
this.selectCity = null;
var obj = this;
//初始化数据
this.InitData=function(slcProvince,slcCity)
{
obj.selectProvince =slcProvince;
obj.selectCity = slcCity;
for(var index=0;index< obj.ProvinceList.length;index++)
{
obj.selectProvince.options.add(new Option(this.ProvinceList[index],obj.ProvinceList[index]));
}
obj.selectProvince.value = obj.ProvinceList[0];
obj.selectProvince.onchange = obj.SlcProvinceChanged;
obj.SlcProvinceChanged();
};
this.SlcProvinceChanged = function()
{
var provinceIndex = obj.selectProvince.selectedIndex;
obj.selectCity.options.length = 0;
for(var index=0;index< obj.CityList[provinceIndex].length;index++)
{
obj.selectCity.options.add(new Option(obj.CityList[provinceIndex][index],obj.CityList[provinceIndex][index]));
}
obj.selectCity.value = obj.CityList[provinceIndex][0];
};
} /**
调用方式
// 实例化
var __provinceAndCity = new __ProvinceAndCityClass();
__provinceAndCity.InitData(document.getElementById("slcProvince"),document.getElementById("slcCity"));
**/
---------------------------------------------
<div align="center"><form name="isc">
<table border="0" cellspacing="0" cellpadding="0">
<tr align="center">
<td nowrap height="11">
<select name="example" size="1" onChange="redirect(this.options.selectedIndex)">
<option selected>★网页天使</option>
<option>★CGI程序设计</option>
<option>★FLASH欣赏</option>
</select>
<select name="stage2" size="1" onChange="redirect1(this.options.selectedIndex)">
<option value=" " selected></option>')
<option value=" " selected>◤------第二层菜单------◢</option>
<option value=" " selected>◤------第二层菜单------◢</option>
</select>
<select name="stage3" size="1" onChange="redirect2(this.options.selectedIndex)">
<option value=" " selected></option>')
<option value=" " selected>◤------第三层菜单------◢</option>
<option value=" " selected>◤------第三层菜单------◢</option>
</select>
</table>
</form>
</div>
<script language="JavaScript">
<!--
var groups=document.isc.example.options.length
var group=new Array(groups)
for (i=0; i<groups; i++)
group[i]=new Array()group[0][0]=new Option("----第二层菜单----"," ");group[1][0]=new Option("」第一类"," ");
group[1][1]=new Option("」第二类","47");
group[1][2]=new Option("」第三类","46");
group[1][3]=new Option("」第四类","45");group[2][0]=new Option("」第一类"," ");
group[2][1]=new Option("」第二类","115");
group[2][2]=new Option("」第三类","116");var temp=document.isc.stage2
function redirect(x){
for (m=temp.options.length-1;m>0;m--)
temp.options[m]=null
for (i=0;i<group[x].length;i++){
temp.options[i]=new Option(group[x][i].text,group[x][i].value)
}
temp.options[0].selected=true
redirect1(0)
}var secondGroups=document.isc.stage2.options.length
var secondGroup=new Array(groups)
for (i=0; i<groups; i++) {
secondGroup[i]=new Array(group[i].length)
for (j=0; j<group[i].length; j++) {
secondGroup[i][j]=new Array() }}secondGroup[0][0][0]=new Option("----第三层菜单----"," ");
secondGroup[1][0][0]=new Option("----第三层菜单----"," ");
secondGroup[1][1][0]=new Option("」 第一节"," ");
secondGroup[1][1][1]=new Option("」 第一节","../cgi/pagenew8.htm");
secondGroup[1][1][2]=new Option("」 第一节","../cgi/pagenew8.htm");
secondGroup[1][1][3]=new Option("」 第一节","../explain/route.htm");secondGroup[1][2][0]=new Option("」第三类"," ");
secondGroup[1][2][1]=new Option("第二节","../cgi/pagenew7.htm");
secondGroup[1][2][2]=new Option("第二节","../cgi/pagenew7.htm");
secondGroup[1][2][3]=new Option("第二节","../explain/route.htm");secondGroup[1][3][0]=new Option("」第四类"," ");
secondGroup[1][3][1]=new Option("第三节","../cgi/pagenew15.htm");
secondGroup[1][3][2]=new Option("第三节","../explain/route.htm");secondGroup[2][0][0]=new Option("----第三层菜单----"," ");
secondGroup[2][1][0]=new Option("」第三类"," ");
secondGroup[2][1][1]=new Option("」第三节(1)","../pictures/cartoon/1.htm");
secondGroup[2][1][2]=new Option("」第三节(2)","../pictures/cartoon/2.htm");
secondGroup[2][1][3]=new Option("」第三节(3)","../pictures/cartoon/3.htm");secondGroup[2][2][0]=new Option("」第四类"," ");
secondGroup[2][2][1]=new Option("第三节l(1)","../pictures/email/1.htm");
secondGroup[2][2][2]=new Option("第三节(2)","../pictures/email/1.htm");var temp1=document.isc.stage3
function redirect1(y){
for (m=temp1.options.length-1;m>0;m--)
temp1.options[m]=null
for (i=0;i<secondGroup[document.isc.example.options.selectedIndex][y].length;i++){
temp1.options[i]=new Option(secondGroup[document.isc.example.options.selectedIndex][y][i].text,secondGroup[document.isc.example.options.selectedIndex][y][i].value)
}
temp1.options[0].selected=true
}function redirect2(){
window.open(temp1.value,"","toolbar=no,location=yes,directories=no,status=no,menubar=no,scrollbars=yes, resizable=yes,copyhistory=yes,width=700,height=450");
}
//-->
</script>
但是是存一个xml文件 还是 存成一个xml字符串直接赋给js的某个变量呢因为这些数据都是动态的 存成xml文件的话 那每次都要生成xml文件 感觉太浪费