運(yùn)用HTML、CSS以及Javascript相關(guān)知識(shí),編寫多窗口多菜單的內(nèi)容聯(lián)動(dòng)。
考察學(xué)生關(guān)于frame、瀏覽器對(duì)象,以及表單控件的概念,javascript事件觸發(fā)機(jī)制和程序設(shè)計(jì),
以及用CSS來組織文字展示的掌握程度,使學(xué)生對(duì)DHTML有更加深刻的理解。
實(shí)驗(yàn)內(nèi)容【必做】
(1)建立一個(gè)包含三個(gè)frame的窗口
(2)第一個(gè)frame1中包含一個(gè)select,內(nèi)容是中國的各個(gè)省
(3)第二個(gè)frame2中同樣含有一個(gè)select,內(nèi)容是各省的地級(jí)市
(4)第三個(gè)frame3用來顯示關(guān)于某地市的介紹。
(5)當(dāng)在frame1的selecet中選擇某個(gè)省,則frame2中的select自動(dòng)把可選項(xiàng)變?yōu)樵撌∠碌母鞯厥?
(6)當(dāng)在frame2中的select選中某地市后,在frame3中顯示該地市的介紹
(7)介紹要求用div容納,居左對(duì)齊,藍(lán)色字,20px,首行縮進(jìn)。
菜單聯(lián)動(dòng)參考界面效果
提示:實(shí)現(xiàn)本試驗(yàn)可以有多種方式(例如:css版,dom版,ajax版,prototype版都可以實(shí)現(xiàn)),學(xué)員只需選擇一種實(shí)現(xiàn)方式即可。
菜單聯(lián)動(dòng)試驗(yàn)相關(guān)數(shù)據(jù)
江蘇
南京 南京是江蘇省的省會(huì),六朝古都,歷史遺跡豐富,文化底蘊(yùn)深厚。
泰州 泰州是千年古郡,胡主席出生的地方,汪老師的故鄉(xiāng),以三麻出名,其中尤以麻將聞名。
蘇州 “上有天堂,下有蘇杭”,蘇州以園林而出名,著名的園林有“拙政園”、“獅子林”等,人杰地靈,文人墨客輩出。
浙江
杭州 杭州是浙江省的省會(huì),風(fēng)景優(yōu)美,人間仙境,所謂“上有天堂,下有蘇杭”。
溫州 溫州最出名的就是商人,溫州人幾乎人人都經(jīng)商,舉國痛恨的溫州炒房團(tuán)就是其中的代表!
嘉興 對(duì)嘉興的了解,還是停留在嘉興南湖上舉行的那次歷史性的大會(huì)。
廣東
廣州 廣州是廣東省的省會(huì),經(jīng)濟(jì)發(fā)達(dá),但是犯罪猖獗!
深圳 深圳是全國第一個(gè)經(jīng)濟(jì)特區(qū),經(jīng)濟(jì)發(fā)達(dá),幾乎全是外來人口,跟廣州一樣,治安也不好。
珠海 珠海是我國第一批沿海開放城市之一,城市優(yōu)美,典型的海濱城市,適合居住。
寫了一個(gè)shit 味 不是太濃的js代碼,供各位看官和懶蛋們享用。
上代碼:
1.frame_a.htm: 顯示省份province的下拉列表
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
</script>
</head>
<body >
<h3>Frame A</h3>
<form name="form1" method="post">
<SELECT ID="s1" NAME="s1" >
<OPTION selected></OPTION>
</SELECT>
</form>
</body>
</html>
2.frame_b.htm: 顯示某個(gè)身份的所有的城市city的下拉列表
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
</head>
<body>
<h3>Frame B</h3>
<form name="form2" method="post">
<SELECT ID="s2" NAME="s2" >
<OPTION selected></OPTION>
</SELECT>
</form>
</body>
</html>
3.frame_c.htm:顯示對(duì)應(yīng)的city的描述description.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
</head>
<body>
<h3>Frame C</h3>
<div id="description"></div>
</body>
</html
4,index.htm: 全局框架,總控頁面.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<script language="javascript" type="text/javascript">
var provinces = new Array();
provinces[0] = "江蘇";
provinces[1] = "浙江";
provinces[2] = "廣東";
var cities = new Array();
cities[0] = new Array();
cities[0][0] = "南京";
cities[0][1] = "泰州";
cities[0][2] = "蘇州";
cities[1] = new Array();
cities[1][0] = "杭州";
cities[1][1] = "溫州";
cities[1][2] = "嘉興";
cities[2] = new Array();
cities[2][0] = "廣州";
cities[2][1] = "深圳";
cities[2][2] = "珠海";
var descriptions = new Array();
descriptions[0] = new Array();
descriptions[0][0] = "南京是江蘇省的省會(huì),六朝古都,歷史遺跡豐富,文化底蘊(yùn)深厚";
descriptions[0][1] = "泰州是千年古郡,胡主席出生的地方,汪老師的故鄉(xiāng),以三麻出名,其中尤以麻將聞名";
descriptions[0][2] = "上有天堂,下有蘇杭,蘇州以園林而出名,著名的園林有“拙政園”、“獅子林”等,人杰地靈,文人墨客輩出。";
descriptions[1] = new Array();
descriptions[1][0] = "杭州是浙江省的省會(huì),風(fēng)景優(yōu)美,人間仙境,所謂“上有天堂,下有蘇杭”。";
descriptions[1][1] = "溫州最出名的就是商人,溫州人幾乎人人都經(jīng)商,舉國痛恨的溫州炒房團(tuán)就是其中的代表!";
descriptions[1][2] = "對(duì)嘉興的了解,還是停留在嘉興南湖上舉行的那次歷史性的大會(huì)";
descriptions[2] = new Array();
descriptions[2][0] = "廣州是廣東省的省會(huì),經(jīng)濟(jì)發(fā)達(dá),但是犯罪猖獗!";
descriptions[2][1] = "深圳是全國第一個(gè)經(jīng)濟(jì)特區(qū),經(jīng)濟(jì)發(fā)達(dá),幾乎全是外來人口,跟廣州一樣,治安也不好。";
descriptions[2][2] = "珠海是我國第一批沿海開放城市之一,城市優(yōu)美,典型的海濱城市,適合居住。";
var current_province;
var current_city;
function setCity(province, city)
{
// alert("city");
//frame_b
var obj = window.frames.frame_b.document.getElementById("s2");
var length = cities[province].length;
for(i = 0; i < length; ++i) {
obj[i] = new Option(cities[province][i]);
obj[i].selected = "false";
}
obj[city].selected = true;
current_city = city;
setCityDescription(province, city);
}
function setCityDescription(province, city)
{
// alert("description");
//frame_c
var obj = window.frames.frame_c.document.getElementById("description");
obj.innerHTML = descriptions[province][city];
}
function setProvince(province)
{
// alert("province");
// var obj = window.frames.frame_a.document.getElementById("s1");
// var obj = window.frames["frame_a"].document.getElementById("s1");
//var obj = window.frames[0].document.getElementById("s1");
// var obj = window.frames["frame_a"]; //.document.getElementById("s1");
// obj = obj.document.getElementById("s1");
var obj = window.frames["frame_a"].document.getElementById("s1"); //由于chrome對(duì)跨域訪問的檢查在本地?zé)o法顯示,在上傳到服務(wù)器上顯示無誤。
var length = provinces.length;
for(i = 0; i < length; ++i) {
obj[i] = new Option(provinces[i]);
obj[i].selected = "false";
}
obj[province].selected = "true";
current_province = province;
var city = 0;
setCity(province, city);
//setCityDescription(province, city);
}
function init(province, city)
{
setProvince(province);
setCity(province, city);
setCityDescription(province, city);
var obj = window.frames.frame_a.document.getElementById("s1");
obj.onchange = Function("setProvince(this.selectedIndex)");
// alert(obj.selectedIndex);
var obj = window.frames.frame_b.document.getElementById("s2");
obj.onchange = Function("setCity(current_province, this.selectedIndex)");
// alert(obj.selectedIndex);
}
</script>
</head>
<frameset cols="35%,65%" onload="init(0, 0);">
<frame src="frame_a.htm" name="frame_a">
<frameset rows="50%,50%">
<frame src="frame_b.htm" name="frame_b">
<frame src="frame_c.htm" name="frame_c">
</frameset>
</frameset>
</html>
5.后記:
1)靈活性: function init(province, city) 在頁面onload時(shí),可以指定初始顯示的城市。競價(jià)排名。
2)可擴(kuò)展性:可以通過增加數(shù)組中的數(shù)據(jù)源,來增加對(duì)更多城市的支持。數(shù)據(jù)源,可以通過xml文件,或者ajax方式實(shí)現(xiàn)動(dòng)態(tài)的數(shù)據(jù)源,利用dom操作實(shí)現(xiàn)。
3)跨域問題: 由于chrome對(duì)frame進(jìn)行跨域檢查,所以在本地不經(jīng)過設(shè)置,頁面無法顯示。不過,上傳到服務(wù)器上,可以,沒有問題。