1、我们希望在注册页面中添加一个字段(籍贯),当用户选择一个具体的省份,在后面的下拉列表中动态加载该省份下所有的城市。显示的效果如下:
2、步骤分析:
第一步:确定事件(onchange)并为其绑定一个函数
第二步:创建一个二维数组用于存储省份和城市
第三步:获取用户选择的省份
第四步:遍历二维数组中的省份
第五步:将遍历的省份与用户选择的省份比较
第六步:如果相同,遍历该省份下所有的城市
第七步:创建城市文本节点
第八步:创建option元素节点
第九步:将城市文本节点添加到option元素节点中去
第十步:获取第二个下拉列表,并将option元素节点添加进去
第十一步:每次操作前清空第二个下拉列表的option内容。
3、具体代码实现:(只实现了籍贯功能)
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title>注册页面重新布局</title>
6 <style type="text/css">
7 #contanier{
8 border: 1px solid red;
9 width: 99%;
10 height: 600px;
11 position: relative;
12 }
13 #content{
14 border: 5px solid gray;
15 width: 50%;
16 height: 60%;
17 position: absolute;
18 top: 100px;
19 left: 300px;
20 background-color: white;
21 padding-top: 50px;
22 }
23 </style>
24
25 <script>
26 //1.创建一个二维数组用于存储
27 var cities=new Array(3);
28 cities[0]=new Array("武汉市","宜昌市","黄冈市","襄阳市");
29 cities[1]=new Array("长沙市","岳阳市","株洲市","郴州市");
30 cities[2]=new Array("石家庄市","邯郸市","廊坊市","保定市");
31 cities[3]=new Array("郑州市","洛阳市","开封市","安阳市");
32
33 function changeCity(val){
34
35 //7.获取第二个下拉列表
36 var cityEle=document.getElementById("city");
37
38 //9.清空第二个下拉列表的option内容
39 cityEle.options.length=0;
40
41 //2.遍历二维数组中的省份
42 for(var i=0;i<cities.length;i++){
43 if(val==i){ //注意!!比较的是角标
44 //3.遍历用户选择的省份下的城市
45 for(var j=0;j<cities[i].length;j++){
46 //alert(cities[i][j]);
47 //4.创建城市的文本节点
48 var textNode=document.createTextNode(cities[i][j]);
49 //5.创建option元素节点
50 var opEle=document.createElement("option");
51 //6.将城市的文本节点添加到option元素节点
52 opEle.appendChild(textNode);
53 //8.option元素节点添加到第二个下拉列表中去
54 cityEle.appendChild(opEle);
55 }
56 }
57 }
58 }
59 </script>
60 </head>
61 <body>
62 <!--中间注册表单部分div-->
63 <div id="contanier">
64 <div id="content">
65 <table border="1" align="center" cellpadding="0" cellspacing="0" width="70%" height="70%" bgcolor="white">
66 <form method="get" action="#" onsubmit="return checkForm()">
67 <tr>
68 <td colspan="2" align="center">
69 <font size="5">会员注册</font>
70 </td>
71
72 </tr>
73 <tr>
74 <td>
75 用户名
76 </td>
77 <td>
78 <input type="text" name="username" id="username"/>
79 </td>
80 </tr>
81 <tr>
82 <td>密码</td>
83 <td>
84 <input type="password" name="password" id="password"/>
85 </td>
86 </tr>
87 <tr>
88 <td>确认密码</td>
89 <td>
90 <input type="password" name="repassword" />
91 </td>
92 </tr>
93 <tr>
94 <td>email</td>
95 <td>
96 <input type="text" name="email" id="email" />
97 </td>
98 </tr>
99 <tr>
100 <td>姓名</td>
101 <td>
102 <input type="text" name="name" />
103 </td>
104 </tr>
105 <!--1.编写HTML文件部分的内容-->
106 <tr>
107 <td>籍贯</td>
108 <td>
109 <!--2.确定事件,通过函数传参的方式拿到改变后的城市-->
110 <select onchange="changeCity(this.value)">
111 <option>--请选择--</option>
112 <option value="0">湖北</option>
113 <option value="1">湖南</option>
114 <option value="2">河北</option>
115 <option value="3">河南</option>
116 </select>
117 <select id="city">
118
119 </select>
120 </td>
121 </tr>
122 <tr>
123 <td>性别</td>
124 <td>
125 <input type="radio" name="sex" value="男"/>男
126 <input type="radio" name="sex" value="女"/>女
127 </td>
128 </tr>
129 <tr>
130 <td>出生日期</td>
131 <td>
132 <input type="text" name="birthday" />
133 </td>
134 </tr>
135 <tr>
136 <td>验证码</td>
137 <td>
138 <input type="text" name="yanzhengma" />
139 <img src="../img/yanzhengma.png" />
140 </td>
141 </tr>
142 <tr>
143 <td colspan="2" align="center">
144 <input type="submit" value="注册" />
145 </td>
146 </tr>
147 </form>
148 </table>
149 </div>
150 </div>
151 </div>
152 </body>
153 </html>
在谷歌浏览器内运行,实现了需求中的效果。