編程(Programming)是編定程序的中文簡(jiǎn)稱,就是讓計(jì)算機(jī)代碼解決某個(gè)問題,對(duì)某個(gè)計(jì)算體系規(guī)定一定的運(yùn)算方式,使計(jì)算體系按照該計(jì)算方式運(yùn)行,并最終得到相應(yīng)結(jié)果的過程。為了使計(jì)算機(jī)能夠理解(understand)人的意圖,人類就必須將需解決的問題的思路、方法和手段通過計(jì)算機(jī)能夠理解的形式告訴計(jì)算機(jī),使得計(jì)算機(jī)能夠根據(jù)人的指令一步一步去工作,完成某種特定的任務(wù)。這種人和計(jì)算體系之間交流的過程就是編程。 【實(shí)例名稱】 JS代碼實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)菜單(2) 【實(shí)例描述】 三級(jí)聯(lián)動(dòng)菜單一般用在多項(xiàng)選擇上,如果用戶不選擇第一級(jí)菜單,就無法實(shí)現(xiàn)第二級(jí)菜單的選擇。本例學(xué)習(xí)制作三級(jí)聯(lián)動(dòng)菜單,與前例不同的是,本例的實(shí)現(xiàn)方法是通過封裝方法的調(diào)用。 【實(shí)例代碼】 <html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>標(biāo)題頁(yè)-本站(www.xue51.com)</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個(gè)下拉框的值
function objSetOption(select1, select2, select3) {
this.select1 = select1;
this.select2 = select2;
this.select3 = select3;
}
//指定3個(gè)下拉框的值
arrText[0]= new objSetOption("選擇A:",
"選擇B_1:,選擇B_2:", "選擇C_1:,選擇C_2:");
arrText[1] = new objSetOption("論文:A",
"語(yǔ)文:A,數(shù)學(xué):B,英語(yǔ):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;
//如果選擇的是第一個(gè)下拉框
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(":");
//如果選擇的是第二個(gè)下拉框
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(":");
//如果選擇的是第三個(gè)下拉框
with(eltSelect3) {
length = arrSelect3.length;
options[j].text = arrData3[0];
options[j].value = arrData3[1]; }
}
break; }
}
}
//初始化設(shè)置3個(gè)下拉框
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>
【運(yùn)行效果】  【難點(diǎn)剖析】 本例的重點(diǎn)是如何動(dòng)態(tài)填充二級(jí)和三級(jí)菜單。當(dāng)使用“options[selectedIndex].Value”知道用戶選擇的是第一級(jí)菜單時(shí),使用“arrSelect2=(arrText[i].select2).split(”,”);’’為二級(jí)菜單填充內(nèi)容;當(dāng)選擇的是二級(jí)菜單時(shí),使用“arrData3=arrSelect3[j].split(¨=");”為三級(jí)菜單填充內(nèi)容。 【源碼下載】 為了JS代碼的準(zhǔn)確性,請(qǐng)點(diǎn)擊:三級(jí)聯(lián)動(dòng)菜單(2) 進(jìn)行本實(shí)例源碼下載
使用編程語(yǔ)言寫的程序,由于每條指令都對(duì)應(yīng)計(jì)算機(jī)一個(gè)特定的基本動(dòng)作,所以程序占用內(nèi)存少、執(zhí)行效率高。 |