js操縱跨frame的三級聯(lián)動select下拉選項實例介紹
更新時間:2013年05月19日 15:08:30 作者:
運用HTML、CSS以及Javascript相關知識,編寫多窗口多菜單的內(nèi)容聯(lián)動,具體思路及代碼如下,感興趣的朋友可以參考下哈,希望大家有所幫助
運用HTML、CSS以及Javascript相關知識,編寫多窗口多菜單的內(nèi)容聯(lián)動。
考察學生關于frame、瀏覽器對象,以及表單控件的概念,javascript事件觸發(fā)機制和程序設計,
以及用CSS來組織文字展示的掌握程度,使學生對DHTML有更加深刻的理解。
實驗內(nèi)容【必做】
(1)建立一個包含三個frame的窗口
(2)第一個frame1中包含一個select,內(nèi)容是中國的各個省
(3)第二個frame2中同樣含有一個select,內(nèi)容是各省的地級市
(4)第三個frame3用來顯示關于某地市的介紹。
(5)當在frame1的selecet中選擇某個省,則frame2中的select自動把可選項變?yōu)樵撌∠碌母鞯厥?
(6)當在frame2中的select選中某地市后,在frame3中顯示該地市的介紹
(7)介紹要求用div容納,居左對齊,藍色字,20px,首行縮進。
菜單聯(lián)動參考界面效果
提示:實現(xiàn)本試驗可以有多種方式(例如:css版,dom版,ajax版,prototype版都可以實現(xiàn)),學員只需選擇一種實現(xiàn)方式即可。
菜單聯(lián)動試驗相關數(shù)據(jù)
江蘇
南京 南京是江蘇省的省會,六朝古都,歷史遺跡豐富,文化底蘊深厚。
泰州 泰州是千年古郡,胡主席出生的地方,汪老師的故鄉(xiāng),以三麻出名,其中尤以麻將聞名。
蘇州 “上有天堂,下有蘇杭”,蘇州以園林而出名,著名的園林有“拙政園”、“獅子林”等,人杰地靈,文人墨客輩出。
浙江
杭州 杭州是浙江省的省會,風景優(yōu)美,人間仙境,所謂“上有天堂,下有蘇杭”。
溫州 溫州最出名的就是商人,溫州人幾乎人人都經(jīng)商,舉國痛恨的溫州炒房團就是其中的代表!
嘉興 對嘉興的了解,還是停留在嘉興南湖上舉行的那次歷史性的大會。
廣東
廣州 廣州是廣東省的省會,經(jīng)濟發(fā)達,但是犯罪猖獗!
深圳 深圳是全國第一個經(jīng)濟特區(qū),經(jīng)濟發(fā)達,幾乎全是外來人口,跟廣州一樣,治安也不好。
珠海 珠海是我國第一批沿海開放城市之一,城市優(yōu)美,典型的海濱城市,適合居住。
寫了一個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: 顯示某個身份的所有的城市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:顯示對應的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] = "南京是江蘇省的省會,六朝古都,歷史遺跡豐富,文化底蘊深厚";
descriptions[0][1] = "泰州是千年古郡,胡主席出生的地方,汪老師的故鄉(xiāng),以三麻出名,其中尤以麻將聞名";
descriptions[0][2] = "上有天堂,下有蘇杭,蘇州以園林而出名,著名的園林有“拙政園”、“獅子林”等,人杰地靈,文人墨客輩出。";
descriptions[1] = new Array();
descriptions[1][0] = "杭州是浙江省的省會,風景優(yōu)美,人間仙境,所謂“上有天堂,下有蘇杭”。";
descriptions[1][1] = "溫州最出名的就是商人,溫州人幾乎人人都經(jīng)商,舉國痛恨的溫州炒房團就是其中的代表!";
descriptions[1][2] = "對嘉興的了解,還是停留在嘉興南湖上舉行的那次歷史性的大會";
descriptions[2] = new Array();
descriptions[2][0] = "廣州是廣東省的省會,經(jīng)濟發(fā)達,但是犯罪猖獗!";
descriptions[2][1] = "深圳是全國第一個經(jīng)濟特區(qū),經(jīng)濟發(fā)達,幾乎全是外來人口,跟廣州一樣,治安也不好。";
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對跨域訪問的檢查在本地無法顯示,在上傳到服務器上顯示無誤。
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時,可以指定初始顯示的城市。競價排名。
2)可擴展性:可以通過增加數(shù)組中的數(shù)據(jù)源,來增加對更多城市的支持。數(shù)據(jù)源,可以通過xml文件,或者ajax方式實現(xiàn)動態(tài)的數(shù)據(jù)源,利用dom操作實現(xiàn)。
3)跨域問題: 由于chrome對frame進行跨域檢查,所以在本地不經(jīng)過設置,頁面無法顯示。不過,上傳到服務器上,可以,沒有問題。
考察學生關于frame、瀏覽器對象,以及表單控件的概念,javascript事件觸發(fā)機制和程序設計,
以及用CSS來組織文字展示的掌握程度,使學生對DHTML有更加深刻的理解。
實驗內(nèi)容【必做】
(1)建立一個包含三個frame的窗口
(2)第一個frame1中包含一個select,內(nèi)容是中國的各個省
(3)第二個frame2中同樣含有一個select,內(nèi)容是各省的地級市
(4)第三個frame3用來顯示關于某地市的介紹。
(5)當在frame1的selecet中選擇某個省,則frame2中的select自動把可選項變?yōu)樵撌∠碌母鞯厥?
(6)當在frame2中的select選中某地市后,在frame3中顯示該地市的介紹
(7)介紹要求用div容納,居左對齊,藍色字,20px,首行縮進。
菜單聯(lián)動參考界面效果
提示:實現(xiàn)本試驗可以有多種方式(例如:css版,dom版,ajax版,prototype版都可以實現(xiàn)),學員只需選擇一種實現(xiàn)方式即可。
菜單聯(lián)動試驗相關數(shù)據(jù)
江蘇
南京 南京是江蘇省的省會,六朝古都,歷史遺跡豐富,文化底蘊深厚。
泰州 泰州是千年古郡,胡主席出生的地方,汪老師的故鄉(xiāng),以三麻出名,其中尤以麻將聞名。
蘇州 “上有天堂,下有蘇杭”,蘇州以園林而出名,著名的園林有“拙政園”、“獅子林”等,人杰地靈,文人墨客輩出。
浙江
杭州 杭州是浙江省的省會,風景優(yōu)美,人間仙境,所謂“上有天堂,下有蘇杭”。
溫州 溫州最出名的就是商人,溫州人幾乎人人都經(jīng)商,舉國痛恨的溫州炒房團就是其中的代表!
嘉興 對嘉興的了解,還是停留在嘉興南湖上舉行的那次歷史性的大會。
廣東
廣州 廣州是廣東省的省會,經(jīng)濟發(fā)達,但是犯罪猖獗!
深圳 深圳是全國第一個經(jīng)濟特區(qū),經(jīng)濟發(fā)達,幾乎全是外來人口,跟廣州一樣,治安也不好。
珠海 珠海是我國第一批沿海開放城市之一,城市優(yōu)美,典型的海濱城市,適合居住。
寫了一個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: 顯示某個身份的所有的城市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:顯示對應的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] = "南京是江蘇省的省會,六朝古都,歷史遺跡豐富,文化底蘊深厚";
descriptions[0][1] = "泰州是千年古郡,胡主席出生的地方,汪老師的故鄉(xiāng),以三麻出名,其中尤以麻將聞名";
descriptions[0][2] = "上有天堂,下有蘇杭,蘇州以園林而出名,著名的園林有“拙政園”、“獅子林”等,人杰地靈,文人墨客輩出。";
descriptions[1] = new Array();
descriptions[1][0] = "杭州是浙江省的省會,風景優(yōu)美,人間仙境,所謂“上有天堂,下有蘇杭”。";
descriptions[1][1] = "溫州最出名的就是商人,溫州人幾乎人人都經(jīng)商,舉國痛恨的溫州炒房團就是其中的代表!";
descriptions[1][2] = "對嘉興的了解,還是停留在嘉興南湖上舉行的那次歷史性的大會";
descriptions[2] = new Array();
descriptions[2][0] = "廣州是廣東省的省會,經(jīng)濟發(fā)達,但是犯罪猖獗!";
descriptions[2][1] = "深圳是全國第一個經(jīng)濟特區(qū),經(jīng)濟發(fā)達,幾乎全是外來人口,跟廣州一樣,治安也不好。";
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對跨域訪問的檢查在本地無法顯示,在上傳到服務器上顯示無誤。
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時,可以指定初始顯示的城市。競價排名。
2)可擴展性:可以通過增加數(shù)組中的數(shù)據(jù)源,來增加對更多城市的支持。數(shù)據(jù)源,可以通過xml文件,或者ajax方式實現(xiàn)動態(tài)的數(shù)據(jù)源,利用dom操作實現(xiàn)。
3)跨域問題: 由于chrome對frame進行跨域檢查,所以在本地不經(jīng)過設置,頁面無法顯示。不過,上傳到服務器上,可以,沒有問題。
您可能感興趣的文章:
- PHP+Mysql+Ajax+JS實現(xiàn)省市區(qū)三級聯(lián)動
- JS制作簡單的三級聯(lián)動
- jquery+json 通用三級聯(lián)動下拉列表
- js實現(xiàn)一個省市區(qū)三級聯(lián)動選擇框代碼分享
- 省市區(qū)三級聯(lián)動下拉框菜單javascript版
- ASP+JS三級聯(lián)動下拉菜單[調(diào)用數(shù)據(jù)庫數(shù)據(jù)]
- 從QQ網(wǎng)站中提取的純JS省市區(qū)三級聯(lián)動菜單
- asp.net省市三級聯(lián)動的DropDownList+Ajax的三種框架(aspnet/Jquery/ExtJs)示例
- jQuery+jsp實現(xiàn)省市縣三級聯(lián)動效果(附源碼)
- 原生js三級聯(lián)動的簡單實現(xiàn)代碼
- js實現(xiàn)簡單的省市縣三級聯(lián)動效果實例
- 原生JavaScript實現(xiàn)的簡單省市縣三級聯(lián)動功能示例
相關文章
Javascript摸擬自由落體與上拋運動原理與實現(xiàn)方法詳解
這篇文章主要介紹了Javascript摸擬自由落體與上拋運動,結(jié)合實例形式分析了Javascript摸擬自由落體與上拋運動相關原理、實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下2020-04-04layer.msg()去掉默認時間,實現(xiàn)手動關閉的方法
今天小編就為大家分享一篇layer.msg()去掉默認時間,實現(xiàn)手動關閉的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09javascript如何使用函數(shù)random來實現(xiàn)課堂隨機點名方法詳解
這篇文章主要介紹了javascript如何使用函數(shù)random來實現(xiàn)課堂隨機點名方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07