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