前两天,徐斌让我帮他给浙大一个离散数学老师“金小刚”做一个online course,部分页面他已经做好了。。由于不支持数据库以及任何Server端脚本语言,只好拿javascript来做select以及页面跳转,比如有两个select下拉菜单,第一个表示“章”,第二个表示“节”,选择完成之后,点击确定,就在页面某块载入指定页面。说干就干,,拿js写了一个function,代码很简单,属于弱代码那种。。。
function select1_onclick() {
if (select1.value == 1) {
select2.length = 0;
var oOption1 = document.createElement("OPTION");
oOption1.text = "1 The Foundations: Logic, Sets, and Functions";
oOption1.value = "d01z/01dd.htm";
select2.add(oOption1);
var oOption2 = document.createElement("OPTION");
oOption2.text = "1.1 Logic";
oOption2.value = "d01z/01j/010101.htm";
select2.add(oOption2);
var ...
};
if (select1.value == 2) {
select2.length = 0;
...
...
}
...
...
};
</SCRIPT>
接着是页面代码引用,几个<select>,<option>,<input>标记就搞定了!
<select id=select1 name=select1 style="width: 302; height: 23" LANGUAGE=javascript onchange="return select1_onclick()" size=1 onclick="return select1_onclick()">
<option value="1" selected>1 The Foundations: Logic, Sets, and Functions</option>
<option value="2">2 The Fundamentals: Algorithms, the Integers, and Matrices</option>
...
...
</select><br>
<select id=select2 name=select2 style="width: 308; height: 23" size=1 >
<option selected value=""d01z/01dd.htm"">1 The Foundations: Logic, Sets, and Functions</option>
...
...
</select>
<input type="button" onClick="javascript:parent.iframe1.location.href=select2.options[select2.selectedIndex].value" target="iframe1" value="确定" name="B3">
这样,一个联动选择菜单也就写完了。最后,在该执行页面跳转的地方插入<iframe name=iframe1 border=0 frameborder=0 framespacing=0 height=600 marginheight=0 marginwidth=0 name=new_date noresize src="introduce.html" width=688 vspale="0">
http://
</iframe>
就算是大功告成了。但是把代码整合进他做的页面中,,但是联动菜单无论如何也工作不起来了。就是无论我选择第2章,第3章,第二个select菜单无论如何还是只让我选择1.1, 1.2,(只包括第一章的内容)郁闷。。
第一个就是让我想到是对象冲突,或者是代码粘过来漏了什么,但是经过仔细检查,一点问题都没有,,突然发现在<select>被包含的<table>前有个form标记字样,<form name="" method="" action="">,我晕,难道是这个原因,,把form标记首尾删掉,故障排除……
至此问题原因已经很清楚了,html的标准文档我还没有看过,但是我认为,可能是所有form标记中的内容都是要通过一个合适的方式——或“post”或“get”传送出去的,不会给本地javascript干涉。以至于发生这样的问题