js 实现省市 二级联动

第一种方法

 1 <body>
 2     <select name="" id="province" onchange="func1(this)">
 3         <option value="">省份</option>
 4     </select>
 5     <select name="" id="city">
 6         <option value="">城市</option>
 7     </select>
 8 </body>
 9 
10 <script>
11     //创建城市数组
12     data = {"河南省":["郑州","商丘"],"新疆":["乌鲁木齐","天山"]};
13     var pro = document.getElementById("province");
14     var city = document.getElementById("city");
15 
16     //添加省份
17     //这里的i是省份
18     for(var i in data){
19         var option_pro = document.getElementById("option");
20         option_pro.innerHTML = i;
21         pro.appendChild(option_pro)
22     }
23 
24 
25     //onchange 选择省份改变的时候
26     function func1(self){
27         //找到每次要选择的哪个省份
28         var choice = (self.options[self.selectedIndex]).innerHTML;
29 
30         //删除上个省份的选择
31         var options = city.children;
32         for(var k=0;k<options.length;k++){
33             city.removeChild(options[k--]);
34         }
35 
36         //把城市写到对应的省份
37         for(var i in data[choice]){
38             var option_city = document.createElement("option");
39             option_pro.innerHTML =  data[choice][i];
40             city.appendChild(option_city)
41         }
42     }
43 </script>

 

 

第二种方法

 1 <body onload="init()">
 2     <select name="" id="provices" onchange=" changeProvice(this.selectedIndes)"></select>
 3     <select name="" id="citys"></select>
 4 </body>
 5 <script>
 6     //设置省市
 7     var provices = new Array();
 8     provices[0] = "请选择省份"
 9     provices[1] = "江苏省"
10     provices[2] = "浙江省"
11     provices[3] = "河南省"
12 
13     var citys = new Array();
14     citys[0] = new Array("请选择城市")
15     citys[1] = new Array("南京", "无锡", "常州", "苏州")
16     citys[2] = new Array("杭州", "宁波", "温州")
17     citys[3] = new Array("郑州", "商丘", "洛阳")
18 
19     //填充省
20     function setProvices(){
21         //声明一个sltprovices
22         //获取省 数组 
23         //写到新创建的option中去
24 
25 
26         var sltprovices = document.getElementById("provices")
27 
28         var opt = null;
29         for(var i = 0; i<provices.length;i++){
30             opt = document.createElement("option")
31             sltprovices.options.add(opt)
32             opt.text = provices[i]
33             opt.value = i
34         }
35 
36         
37     }
38 
39     //填充城市
40     //根据pid来确定是哪一个省的城市
41     function setCity(pid){
42         var sltcitys = document.getElementById("citys")
43 
44 
45         var opt = null
46         for(var i=0;i<citys[pid].length;i++){
47             opt = document.createElement("option")
48             sltcitys.options.add(opt)
49             opt.text = citys[pid][i]
50             opt.value = i
51         }
52 
53 
54     }
55 
56     //清理城市
57     function clear(){
58         sltcitys = document.getElementById("citys")
59         for(var i=sltcitys.options.length - 1; i>=0;i--){
60             sltcitys.options.remove(i)
61         }
62     }
63 
64     //初始化
65     function init(){
66         setProvices()
67         changeProvice(0)
68     }
69 
70     //改变省的时候
71     function changeProvice(pid){
72         clear();
73         setCity(pid)
74     }
75 </script>

 

posted @ 2020-06-19 14:06  秋叶哈哈宋梦辉  阅读(510)  评论(0编辑  收藏  举报