二级联动(无刷新、数据库)

数据库中有表:Major结构如下:MajorNameDept应用与维护专业计算机系商务英语专业外语系软件工程专业计算机系............................ 数据库中有表:Major
结构如下:
MajorName Dept
应用与维护专业 计算机系
商务英语专业 外语系
软件工程专业 计算机系
........... ........
............ .........
代码如下:
<html>
<script>

function ChangeDept()
{
.....
}

</script>

<select name="Dept"size="1" onChange="ChangeDept()">
..................'option 从数据库创建
<option value="系别1">系别1</option>
<option value="系别2">系别2</option>
...................
</select>

<select name="Major"size="1">
..................'option 从数据库创建
<option value="专业1">专业1</option>
<option value="专业2">专业2</option>
..............
</select>

</html>

可以说是二级联动(数据库)问题,还是解释一下吧.
第一次进入时,第一个select显示计算机系 第二个select显示其相应的专业名,这时第二个下拉框
应该有"应用与维护专业"、 "软件工程专业".....
当从第一个select选一个专业时,比如选外语系,第二个select里就会有 "商务英语专业"、....
我是这样做的:

sql="select MajorName,Dept FROM st_Major"
set rst=cn.Execute(sql)
MajorArray=rs.GetRows ////返回一个二维数组,没问题的MajorArray(0,0),MajorArray(0,1)里面都有内容

的,数据库方面应该没有问题的,可以略过....

function ChangeDept()
{
document.all.Major.innerHTML=""
var DeptValue=document.getElementById("Dept").value //将第一个select选择的value传给变量
for....//这个循环将Dept字段和DeptValue作比较找出与系别相应的专业,这个用循环查所有记录就可以了,我

会。
{
var slt=document.getElementById("Major");
var objOption=document.createElement("OPTION");
objOption.value=DeptValue;
objOption.text=MajorArray(1,0);
}
}

在测试的时候出现问题,点了没反应,是不是 objOption.text=MajorArray(1,0) 这句有问题?
为了测试我改成这样:
function ChangeDept()
{
document.all.Major.innerHTML=""
var slt=document.getElementById("Major");
var objOption=document.createElement("OPTION");
objOption.value=DeptValue;
objOption.text="aaaaa";
}

这样就可以添加一个option,郁闷中,不知道问题出在哪里。。。。在这里请教大家了,或许我的方法不对
大家可以给个详细、好点的例子,问题解决再+100分!麻烦大家了!
展开
 我来答
阳光上的桥
2008-06-16 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65813
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
哇,这么多分,真爽。

我的空间里面我以前贴过一篇三级联动的例子,我现在又给你写了一个两级联动的代码例子,在IE上测试通过,但愿其它浏览器能过,因为我没有安装别的软件,我害怕你让我一定要在别的环境调试。

下面的代码是HTML部分,数据库内容提取部分我相信你没有问题,你的ASP水平肯定比我好,稍微测试几下就能过的。

我写的例子代码如下:

<html>
<head>
<title>两级联动表单</title>
<script language="javascript">
//下面一行(仅仅一行)的内容由数据库输出
var strs='计算机系 应用与维护专业 软件工程专业|外语系 商务英语专业 其它外语专业';
//上面这一行从数据库里面提取,使用ASP应该非常简单,比如:
//response.write "var str='"
//last_dep=""
//do while not rs.eof
//if rs("Dept")<>last_dep and last_dep<>"" then response.write "|"&rs("Dept")
//response.write " "&rs("MajorName")
//last_dep=rs("Dept")
//loop
var opts=new Array();
//下面的代码利用数据库取出的strs变量,生成数组opts
var i,j,Dept,MajorName;
Dept=strs.split('|');
for (i=0;i<Dept.length;i++){
opts[i]=new Array();
MajorName=Dept[i].split(/\s+/);
for (j=0;j<MajorName.length;j++){opts[i][j]=MajorName[j];}
}
//下面的函数初始化联动表单
function setup()
{
var Dept=document.getElementById('id_Dept');
with(Dept){
length = 0;
for(i=0;i<opts.length;i++)
options[length]=new Option(opts[i][0],opts[i][0]);
}
Dept_Changed();
}
//下面的函数在改变系时改变专业
function Dept_Changed(){
var Dept=document.getElementById('id_Dept').selectedIndex;
var MajorName=document.getElementById('id_MajorName');
with(MajorName){
length = 0;
for(i=1;i<opts[Dept].length;i++)
options[length]=new Option(opts[Dept][i],opts[Dept][i]);
}
}
</script>
</head>
<body>
<form>
<Select id="id_Dept" NAME="Dept" onChange="Dept_Changed();"></Select>
<Select id="id_MajorName" NAME="MajorName"></Select>
</form>
<!--js初始化函数-->
<SCRIPT language="javascript">
setup()
</SCRIPT>
</body>
</html>

有不明白的请你补充。

不过我相信你已经明白了,核心部分就是strs变量的组装,不同系之间用|分隔,一个系里面是系名开头,然后是各专业,中间用空格分隔。

祝你好运。
337948191
2008-06-17 · TA获得超过239个赞
知道答主
回答量:370
采纳率:0%
帮助的人:120万
展开全部
靠!看不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式