Javascript-省市级联效果

 1 <!DOCTYPE html>
 2 
 3 <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
 4 <head>
 5     <meta charset="utf-8" />
 6     <title></title>
 7 </head>
 8 <body>
 9     <style type="text/css">
10         .cascade { float: left;  120px; height: 30px; }
11         .cascade select {  100%; height: 100%; }
12     </style>
13 
14     <div class="cascade">
15         <select id="province" onchange="change();">
16             <option>--请选择省份--</option>
17         </select>
18     </div>
19 
20     <div class="cascade">
21         <select id="city">
22             <option>--请选择市--</option>
23         </select>
24     </div>
25 
26     <script type="text/javascript">
27         //首先建立一个你需要省,和它对应的市的数组,如下:
28         var cityList = new Array();
29         cityList['北京市'] = ['朝阳区', '东城区', '西城区', '海淀区', '宣武区', '丰台区', '怀柔', '延庆', '房山'];
30         cityList['上海市'] = ['宝山区', '长宁区', '丰贤区', '虹口区', '黄浦区', '青浦区', '南汇区', '徐汇区', '卢湾区'];
31         cityList['广州省'] = ['广州市', '惠州市', '汕头市', '珠海市', '佛山市', '中山市', '东莞市'];
32         cityList['深圳市'] = ['福田区', '罗湖区', '盐田区', '宝安区', '龙岗区', '南山区', '深圳周边'];
33         cityList['重庆市'] = ['俞中区', '南岸区', '江北区', '沙坪坝区', '九龙坡区', '渝北区', '大渡口区', '北碚区'];
34         cityList['天津市'] = ['和平区', '河西区', '南开区', '河北区', '河东区', '红桥区', '塘古区', '开发区'];
35         cityList['江苏省'] = ['南京市', '苏州市', '无锡市'];
36         cityList['浙江省'] = ['杭州市', '宁波市', '温州市'];
37         cityList['四川省'] = ['四川省', '成都市'];
38         cityList['海南省'] = ['海口市'];
39         cityList['福建省'] = ['福州市', '厦门市', '泉州市', '漳州市'];
40         cityList['山东省'] = ['济南市', '青岛市', '烟台市'];
41         cityList['江西省'] = ['江西省', '南昌市'];
42         cityList['广西省'] = ['柳州市', '南宁市'];
43         cityList['安徽省'] = ['安徽省', '合肥市'];
44         cityList['河北省'] = ['邯郸市', '石家庄市'];
45         cityList['河南省'] = ['郑州市', '洛阳市'];
46         cityList['湖北省'] = ['武汉市', '宜昌市'];
47         cityList['湖南省'] = ['湖南省', '长沙市'];
48         cityList['陕西省'] = ['陕西省', '西安市'];
49         cityList['山西省'] = ['山西省', '太原市'];
50         cityList['黑龙江省'] = ['黑龙江省', '哈尔滨市'];
51         cityList['其他'] = ['其他'];
52 
53         /**科普小知识
54           *Option(text,value)  返回包含下拉列表框中的所有选项的一个数组,text==选项文本值;value==文本值
55           *add(new,old)  用于向<select>中添加一个<option>标签,
56                          new表示新添加到old之前的Option对象,
57                          如果old为null,那则直接添加到<select>所有选项的末尾
58           *for(in)  循环遍历对象的属性  ,例:for(var i in cityList)
59                     这里的i==cityList的属性,就是省份名称
60                     例:for (var j in city[i])
61                     这里的j==cityList[i]的属性,cityList中下表为i的属性的属性,就是每个城市的index(下标)
62         **/
63 
64         //然后写一个方法把这一大长串的数组给他调到你需要的地方去
65         function change() {
66             var pVal = document.getElementById("province").value; //获取省份列表中的值
67             var c = document.getElementById("city"); //获取城市列表
68             c.options.length = 0; //清楚当前城市列表中的值
69             for (var i in cityList) { //循环遍历cityList的属性
70                 if (i == pVal) { //判断当i等于省份列表中的值时;
71                     for (var j in cityList[i]) { //循环遍历cityList[i]的属性
72                         c.add(new Option(cityList[i][j], cityList[i][j]), null)
73                         //城市列表的末尾增加一个<option>选项,text:cityList[i][j],value:cityList[i][j]
74                     }
75                     break;
76                 }
77             }
78         }
79 
80         function allCity() {
81             var p = document.getElementById("province"); //获取省份列表
82             for (var i in cityList) { //循环遍历cityList的属性
83                 p.add(new Option(i, i), null);
84                 //省份列表的末尾增加一个<option>选项,text:i,value:i
85             }
86         }
87         window.onload = allCity;
88 
89 
90     </script>
91 
92 
93 
94 
95 </body>
96 </html>
原文地址:https://www.cnblogs.com/leona-d/p/5853443.html