Javascript版的下拉框联动

来源:互联网 发布:手机源码怎么用 编辑:程序博客网 时间:2024/06/05 10:29

不管是在论坛也好,Q群也好,经常看到询问关于这个联动的问题,自己都被问烦了,干脆做一个例子放在这里,再有人问,让他们自己看吧。

 

说明一下,本例子是纯Javascript的联动,没有用到AJAX回发,如果数据量比较大时,IE响应可能比较慢

比如我公司,上千人的姓名加工号,组成的字符串,加上页面本身生成的HTML代码也庞大,IE经常加载半天,嗯,这么说吧,跟asp.net的那个ViewState的大小有的比啊,呵呵,废话不多说,例子在下面。

 

  1. <html>
  2.     <body onload="InsertProvince()">
  3.         <form>
  4.             省份:<select name="lstPro" onchange="ProChange(this);"></select>
  5.             城市:<select name="lstCity"></select>
  6.         </form>
  7.         <script type="text/javascript">
  8.             // 省份数组,省的ID+省的名称,从数据库中取出全部的省份,按下列格式组成一个javascript字符串
  9.             var arrProvince = new Array(
  10.                                 new Array(1,"山东"),
  11.                                 new Array(2,"江西"),
  12.                                 new Array(3,"福建")
  13.                              );
  14.             // 城市数组,省的ID+城市的ID+城市的名称,从数据库中取出全部的城市,按下列格式组成一个javascript字符串
  15.             var arrCity = new Array(
  16.                             new Array(1,1,"济南"),
  17.                             new Array(1,2,"青岛"),
  18.                             new Array(1,3,"烟台"),
  19.                             new Array(2,4,"南昌"),
  20.                             new Array(2,5,"吉安"),
  21.                             new Array(2,6,"九江"),
  22.                             new Array(2,7,"赣州"),
  23.                             new Array(2,8,"宜春"),
  24.                             new Array(3,9,"福州"),
  25.                             new Array(3,10,"厦门"),
  26.                             new Array(3,11,"三明"),
  27.                             new Array(3,12,"泉州")
  28.                          );
  29.             
  30.             // 初始化用,填充全部的省份和第一个省份的城市用
  31.             function InsertProvince(){
  32.                 var objPro = document.getElementById("lstPro");
  33.                 for(var i=0;i<arrProvince.length;i++){
  34.                     var opn = new Option(arrProvince[i][1],arrProvince[i][0]);
  35.                     objPro.options.add(opn);
  36.                 }
  37.                 ProChange(objPro);
  38.             }
  39.             // 省份下拉框变化时,取该省份的城市填充
  40.             function ProChange(obj){
  41.                 var objCity = document.getElementById("lstCity");
  42.                 while(objCity.options.length > 0)
  43.                     objCity.options.remove(0);
  44.                 for(var i=0;i<arrCity.length;i++)
  45.                     if(arrCity[i][0] == obj.value){
  46.                         var opn = new Option(arrCity[i][2],arrCity[i][1]);
  47.                         objCity.options.add(opn);
  48.                     }
  49.             }
  50.         </script>
  51.     </body>
  52. </html>