當(dāng)前位置:軟件學(xué)堂 > 資訊首頁 > 網(wǎng)絡(luò)編程 > 編程其他 > JS代碼實現(xiàn)三級聯(lián)動菜單(2)

JS代碼實現(xiàn)三級聯(lián)動菜單(2)

2012/11/2 20:21:15作者:佚名來源:網(wǎng)絡(luò)

移動端

【實例名稱】

JS代碼實現(xiàn)三級聯(lián)動菜單(2)

【實例描述】

三級聯(lián)動菜單一般用在多項選擇上,如果用戶不選擇第一級菜單,就無法實現(xiàn)第二級菜單的選擇。本例學(xué)習(xí)制作三級聯(lián)動菜單,與前例不同的是,本例的實現(xiàn)方法是通過封裝方法的調(diào)用。

【實例代碼】

 

<html xmlns="http://www.w3.org/1999/xhtml" > <head>     <title>標(biāo)題頁-學(xué)無憂(m.wangbatian.cn)</title> </head> <body> <form method="post" name="form1"> <select name="select1" onchange="select()"></select> <select name="select2"></select> <select name="select3"></select> </form> <script language="javascript"> var arrText = new Array(3); var arrValue = new Array(arrText.length); //設(shè)置3個下拉框的值 function objSetOption(select1, select2, select3) { this.select1 = select1; this.select2 = select2; this.select3 = select3; } //指定3個下拉框的值 arrText[0]= new objSetOption("選擇A:", "選擇B_1:,選擇B_2:", "選擇C_1:,選擇C_2:"); arrText[1] = new objSetOption("論文:A", "語文:A,數(shù)學(xué):B,英語:C", "初中:A,高中:B"); arrText[2] = new objSetOption("例題:A", "顯示A2_1: 值B2_1,顯示A2_2:值B2_2", "顯示A3_1:值B3_1,顯示B3_2:值B3_2"); //判斷用戶的選擇 function select() { var eltSelect1 = document.form1.select1; var eltSelect2 = document.form1.select2; var eltSelect3 = document.form1.select3; var arrSelect1, arrSelect2, arrSelect3; var arrData1, arrData2, arrData3; //如果選擇的是第一個下拉框 with(eltSelect1) { var strSelect = options[selectedIndex].value; } for(i = 0;i < arrText.length;i ++) { arrSelect1 = arrText[i].select1; arrData1 = arrSelect1.split(":"); if (arrData1[1] == strSelect) { arrSelect2 = (arrText[i].select2).split(","); for(j = 0;j < arrSelect2.length;j++) { arrData2 = arrSelect2[j].split(":"); //如果選擇的是第二個下拉框 with(eltSelect2) { length = arrSelect2.length; options[j].text = arrData2[0]; options[j].value = arrData2[1]; } } arrSelect3 = (arrText[i].select3).split(","); for(j = 0;j < arrSelect3.length;j++) { arrData3 = arrSelect3[j].split(":"); //如果選擇的是第三個下拉框 with(eltSelect3) { length = arrSelect3.length; options[j].text = arrData3[0]; options[j].value = arrData3[1]; } } break; } } } //初始化設(shè)置3個下拉框 function init() { var eltSelect1 = document.form1.select1; var eltSelect2 = document.form1.select2; var eltSelect3 = document.form1.select3; var arrSelect1, arrSelect2, arrSelect3; var arrData1, arrData2, arrData3; if (eltSelect1 != undefined && eltSelect2 ! = undefined && eltSelect3 != undefined) { with(eltSelect1) { length = arrText.length; for(i = 0;i < arrText.length;i ++) { arrSelect1 = arrText[i].select1; arrData1 = arrSelect1.split(":"); options[i].text = arrData1[0]; options[i].value = arrData1[1]; } } with(eltSelect2) { arrSelect2 = (arrText[0].select2).split(","); length = arrSelect2.length; for(i = 0;i < length;i ++) { arrData2 = arrSelect2[i].split(":"); options[i].text = arrData2[0]; options[i].value = arrData2[1]; } } with(eltSelect3) { arrSelect3 = (arrText[0].select3).split(","); length = arrSelect3.length; for(i = 0;i < length;i ++) { arrData3 = arrSelect3[i].split(":"); options[i].text = arrData3[0]; options[i].value = arrData3[1]; } } } } init(); </script> </body> </html>

【運行效果】

 三級聯(lián)動菜單運行效果

【難點剖析】

本例的重點是如何動態(tài)填充二級和三級菜單。當(dāng)使用“options[selectedIndex].Value”知道用戶選擇的是第一級菜單時,使用“arrSelect2=(arrText[i].select2).split(”,”);’’為二級菜單填充內(nèi)容;當(dāng)選擇的是二級菜單時,使用“arrData3=arrSelect3[j].split(¨=");”為三級菜單填充內(nèi)容。

【源碼下載】

為了JS代碼的準(zhǔn)確性,請點擊:三級聯(lián)動菜單(2) 進(jìn)行本實例源碼下載