在設計數據庫查詢頁面時,下拉菜單是經常使用的元素。很多時候你會希望選擇了下拉菜單的一項後,相應的另一下拉菜單的內容會隨之改變。這種功能可以通過刷新頁面來實現,但界面顯得不那麼友好。在本文介紹例子中,不需要刷新頁面便可達到目的。當在下拉菜單中選擇了一個省份後,另一下拉菜單會出現該省份的一些城市供選擇。我的基本思路是:在客戶端腳本中,把下拉菜單可能會出現的所有內容預先存放於數組中,以後根據需要從數組中抽取數據寫入下拉菜單中。以下是完整的代碼:
<Html>
<HEAD>
<TITLE>動態改變下拉菜單內容示例</TITLE>
</HEAD>
<SCRipT LANGUAGE=JavaScript>
<!--
//定義一個二維數組aArray,用於存放城市名稱。
var aCity=new Array();
aCity[0]=new Array();
aCity[1]=new Array();
aCity[2]=new Array();
aCity[3]=new Array();
//賦值,每個省份的城市存放於數組的一行。
aCity[0][0]="--請選擇--"
aCity[1][0]="--請選擇--"
aCity[1][1]="廣州市";
aCity[1][2]="深圳市";
aCity[1][3]="珠海市";
aCity[1][4]="汕頭市";
aCity[1][5]="佛山市";
aCity[2][0]="--請選擇--"
aCity[2][1]="長沙市";
aCity[2][2]="株州市";
aCity[2][3]="湘潭市";
aCity[3][0]="--請選擇--"
aCity[3][1]="杭州市";
aCity[3][2]="蘇州市";
aCity[3][3]="溫州市";
function ChangeCity()
{var i,iPRovinceIndex;
iProvinceIndex=document.frm.optProvince.selectedIndex
iCityCount=0;
while (aCity[iProvinceIndex][iCityCount]!=null) iCityCount++;//計算選定省份的城市個數
document.frm.optCity.length=iCityCount;//改變下拉菜單的選項數
for (i=0;i<=iCityCount-1;i++)//改變下拉菜單的內容
document.frm.optCity[i]=new Option(aCity[iProvinceIndex][i]);
document.frm.optCity.focus()
}
-->
</SCRIPT>
<BODY ONFOCUS=ChangeCity()>
<H3>選擇你所在的省份及城市</H3>
<FORM NAME="frm">
<P>省份:
<SELECT NAME="optProvince" SIZE="1" ONCHANGE=ChangeCity()>
<OPTION>--請選擇--</OPTION>
<OPTION>廣東省</OPTION>
<OPTION>湖南省</OPTION>
<OPTION>浙江省</OPTION>
</SELECT>
</P>
<P>城市:
<SELECT NAME="optCity" SIZE="1">
<OPTION>--請選擇--</OPTION>
</SELECT>
</P>
</FORM>
</BODY>
</Html>