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; width: 120px; height: 30px; } 11 .cascade select { width: 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>