本文實例為大家分享了js實作select二級聯動下拉選單,供大家參考,具體內容如下
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> <script language="JavaScript" type="text/javascript"> //定义了城市的二维数组,里面的顺序跟省份的顺序是相同的。通过selectedIndex获得省份的下标值来得到相应的城市数组 var city=[ ["北京","天津","上海","重庆"], ["南京","苏州","南通","常州"], ["福州","福安","龙岩","南平"], ["广州","潮阳","潮州","澄海"], ["兰州","白银","定西","敦煌"] ]; function getCity(){ //获得省份下拉框的对象 var sltProvince=document.form1.province; //获得城市下拉框的对象 var sltCity=document.form1.city; //得到对应省份的城市数组 var provinceCity=city[sltProvince.selectedIndex - 1]; //清空城市下拉框,仅留提示选项 sltCity.length=1; //将城市数组中的值填充到城市下拉框中 for(var i=0;i<provinceCity.length;i++){ sltCity[i+1]=new Option(provinceCity[i],provinceCity[i]); } } </script> </HEAD> <BODY> <FORM METHOD=POST ACTION="" name="form1"> <SELECT NAME="province" onChange="getCity()"> <OPTION VALUE="0">请选择所在省份 </OPTION> <OPTION VALUE="直辖市">直辖市 </OPTION> <OPTION VALUE="江苏省">江苏省 </OPTION> <OPTION VALUE="福建省">福建省 </OPTION> <OPTION VALUE="广东省">广东省 </OPTION> <OPTION VALUE="甘肃省">甘肃省 </OPTION> </SELECT> <SELECT NAME="city"> <OPTION VALUE="0">请选择所在城市 </OPTION> </SELECT> </FORM> </BODY> </HTML>
這段程式碼比較簡單。
如果對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物件
要將下拉框的所有選項刪除有兩種方法,
第一種方法就是遍歷刪除:
var l=myselect.length; for(var i=0;i<l;i++){ myselect.options[i]=null; }
第二種方法比較簡單,因此一般都使用此方法:
myselect.length=0;