javascript实现二级联动下拉框

  这个是简单也是最基本的下拉框联动的示例,这个示例主要针对那些只有二级联动,且第一级是固定的选项,第二级的内容也比较简单。这里使用了javascript来联动第二级下拉框。

 1  <! DOCTYPE HTML PUBLIC  " -//W3C//DTD HTML 4.0 Transitional//EN " >
 2    < HTML >
 3  < HEAD >
 4  < TITLE >  New Document  </ TITLE >
 5  < META NAME = " Generator "  CONTENT = " EditPlus " >
 6  < META NAME = " Author "  CONTENT = "" >
 7  < META NAME = " Keywords "  CONTENT = "" >
 8  < META NAME = " Description "  CONTENT = "" >
 9  < script language = " JavaScript "  type = " text/javascript " >
10       // 定义了城市的二维数组,里面的顺序跟省份的顺序是相同的。通过selectedIndex获得省份的下标值来得到相应的城市数组
11      var city = [
12      [ " 北京 " , " 天津 " , " 上海 " , " 重庆 " ],
13      [ " 南京 " , " 苏州 " , " 南通 " , " 常州 " ],
14      [ " 福州 " , " 福安 " , " 龙岩 " , " 南平 " ],
15      [ " 广州 " , " 潮阳 " , " 潮州 " , " 澄海 " ],
16      [ " 兰州 " , " 白银 " , " 定西 " , " 敦煌 " ]
17      ];
18 
19      function getCity(){
20           // 获得省份下拉框的对象
21          var sltProvince = document.form1.province;
22           // 获得城市下拉框的对象
23          var sltCity = document.form1.city;
24          
25           // 得到对应省份的城市数组
26          var provinceCity = city[sltProvince.selectedIndex  -   1 ];
27 
28           // 清空城市下拉框,仅留提示选项
29          sltCity.length = 1 ;
30 
31           // 将城市数组中的值填充到城市下拉框中
32           for (var i = 0 ;i < provinceCity.length;i ++ ){
33              sltCity[i + 1 ] = new  Option(provinceCity[i],provinceCity[i]);
34          }
35      }
36  </ script >
37  </ HEAD >
38 
39  < BODY >
40  < FORM METHOD = POST ACTION = ""  name = " form1 " >
41           < SELECT NAME = " province "  onChange = " getCity() " >
42               < OPTION VALUE = " 0 " > 请选择所在省份  </ OPTION >
43               < OPTION VALUE = " 直辖市 " > 直辖市  </ OPTION >
44               < OPTION VALUE = " 江苏省 " > 江苏省  </ OPTION >
45               < OPTION VALUE = " 福建省 " > 福建省  </ OPTION >
46               < OPTION VALUE = " 广东省 " > 广东省  </ OPTION >
47               < OPTION VALUE = " 甘肃省 " > 甘肃省  </ OPTION >
48           </ SELECT >
49           < SELECT NAME = " city " >
50               < OPTION VALUE = " 0 " > 请选择所在城市  </ OPTION >
51           </ SELECT >
52       </ FORM >
53  </ BODY >
54  </ HTML >
55 


这段代码比较简单。

如果对js不大熟悉,可以看看下面关于js处理select对象的内容:

1、使用selectedIndex属性获取当前选项的索引
    下拉框的选项是一个线性数组,每个选项都有一个索引,selectedIndex表示当前被选中的选项的索引号。结合options属性,可以得到被选中的option对象,从而对其做进一步的处理。当下拉框可多选时,selectedIndex属性返回第一个被选中的索引。
    selectedIndex是个只读的属性,想把通过索引指定的下拉框的项设置为选中状态,可以设置option对象的selected=true来实现。

2、为select对象添加一个选项
    sltCity[i+1]=new Option(provinceCity[i],provinceCity[i]);
   
new Option(provinceCity[i],provinceCity[i])表示创建一个值为provinceCity[i],文本为provinceCity[i]的option对象,sltCity是页面上的city对象,i+1指定新添选项的位置。

3、清空一个select对象
    要将下拉框的所有选项删除有两种方法,
    第一种方法就是遍历删除:
   

1  var l = myselect.length;
2  for (var i = 0 ;i < l;i ++ ){
3     myselect.options[i] = null ;
4  }

    第二种方法比较简单,因此一般都使用此方法:
myselect.length = 0 ;

 

 第二种方法比较简单,因此一般都使用此方法:
myselect.length=0;
当你的option对象名称和ID前缀是以数字开头时以上写法还可以这样写(因为当option对象前缀为数字时可能会带来一系列的JS脚本错误提示,所以不建议前缀使用带有数字的名称):

 0 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 1 <HTML>
 2 <HEAD>

3 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
 4 <TITLE> New Document </TITLE>
 5 <META NAME="Generator" CONTENT="EditPlus">
 6 <META NAME="Author" CONTENT="">
 7 <META NAME="Keywords" CONTENT="">
 8 <META NAME="Description" CONTENT="">
 9 <script language="JavaScript" type="text/javascript">
10     //定义了城市的二维数组,里面的顺序跟省份的顺序是相同的。通过selectedIndex获得省份的下标值来得到相应的城市数组
11     var city=[
12     ["北京","天津","上海","重庆"],
13     ["南京","苏州","南通","常州"],
14     ["福州","福安","龙岩","南平"],
15     ["广州","潮阳","潮州","澄海"],
16     ["兰州","白银","定西","敦煌"]
17     ];

      

       var  cityID=[
     ["0101","0102","0103","0104"],
     ["0201","0202","0203","0204"],
     ["0301","0302","0303","0304"],
     ["0401","0402","0403","0404"],
     ["0501","0502","0503","0504"]
     ];
18
19     function getCity(var1,var2){
20         //获得省份下拉框的对象
21         var sltProvince=document.getElementById(var1);
22         //获得城市下拉框的对象
23         var sltCity=document.getElementById(var2);
24        
25         //得到对应省份的城市数组
26         var provinceCity=city[sltProvince.selectedIndex - 1];
27         var provinceCity_ID=cityID[sltProvince.selectedIndex - 1];


28         //清空城市下拉框,仅留提示选项
29         sltCity.length=1;
30
31         //将城市数组中的值填充到城市下拉框中
32        if(document.getElementById(var1).value != 0){//当选择option的值为0时不执行下面的       

               for(var i=0;i<provinceCity.length;i++){

                  //new Option中的两个参数,前面的值表示为显示内容,后面为value的值
33               sltCity[i+1]=new Option(provinceCity[i],provinceCity_ID[i]);
34           }

           }
35     }
36 </script>
37 </HEAD>
38
39 <BODY>
40 <FORM METHOD=POST ACTION="" name="form1">
41         <SELECT id = "1province" NAME="1province" onChange="getCity('1province','1city')">
42             <OPTION VALUE="0">请选择所在省份 </OPTION>
43             <OPTION VALUE="直辖市">直辖市 </OPTION>
44             <OPTION VALUE="江苏省">江苏省 </OPTION>
45             <OPTION VALUE="福建省">福建省 </OPTION>
46             <OPTION VALUE="广东省">广东省 </OPTION>
47             <OPTION VALUE="甘肃省">甘肃省 </OPTION>
48         </SELECT>
49         <SELECT id ="1city" NAME="1city">
50             <OPTION VALUE="0">请选择所在城市 </OPTION>
51         </SELECT>
52     </FORM>
53 </BODY>
54 </HTML>


注:getCity('1province','1city')中的'1province','1city'也可以换写成this.id.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值