二级联动(无刷新、数据库)
数据库中有表: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分!麻烦大家了! 展开
结构如下:
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分!麻烦大家了! 展开
2个回答
展开全部
哇,这么多分,真爽。
我的空间里面我以前贴过一篇三级联动的例子,我现在又给你写了一个两级联动的代码例子,在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变量的组装,不同系之间用|分隔,一个系里面是系名开头,然后是各专业,中间用空格分隔。
祝你好运。
我的空间里面我以前贴过一篇三级联动的例子,我现在又给你写了一个两级联动的代码例子,在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变量的组装,不同系之间用|分隔,一个系里面是系名开头,然后是各专业,中间用空格分隔。
祝你好运。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询