用javascript写是不现实的想法。难道你想把全部记录都取到客户端吗?毛毛所说不错,只能选第A值后,重新到服务器上取记录。你可以做成iframe的形式,也就是说两个select不在一个frame里,B列表在一个小的iframe中,这样整个页面不会显得又被重载了一次,只重载这个小iframe中的内容即可。不过这们你要考虑的是它们在不同的form中了,提交的时候你就必须多些处理。
用javascript写是不现实的想法。难道你想把全部记录都取到客户端吗?毛毛所说不错,只能选第A值后,重新到服务器上取记录。你可以做成iframe的形式,也就是说两个select不在一个frame里,B列表在一个小的iframe中,这样整个页面不会显得又被重载了一次,只重载这个小iframe中的内容即可。不过这们你要考虑的是它们在不同的form中了,提交的时候你就必须多些处理。
用javascript写是不现实的想法。难道你想把全部记录都取到客户端吗?毛毛所说不错,只能选第A值后,重新到服务器上取记录。你可以做成iframe的形式,也就是说两个select不在一个frame里,B列表在一个小的iframe中,这样整个页面不会显得又被重载了一次,只重载这个小iframe中的内容即可。不过这们你要考虑的是它们在不同的form中了,提交的时候你就必须多些处理。
显示页面的jsp
<jsp:include page="prnArr.jsp" flush="true"/>
<script src = "list_change.js">
</script>
<html>
<head>
<title>list_change_test1</title>
</head>
<body >
<H1>list_change_test1</H1>
<form name="list1">
<table>
<TR>
<TD >IT技术分类</TD>
<TD>
<SELECT name=SkillName onchange="JavaScript:Sublist(list_data,this,list1.SubSkill)">
<OPTION selected value=-1>---请选择---</OPTION>
<script language="javascript">
Mainlist(list_data,0,"0000",6);
</script>
</TD>
<TD>IT技术分类明细</TD>
<TD>
</SELECT>
<SELECT name=SubSkill onchange="JavaScript:Sublist(list_data,this,list1.SubSkill1)">
</SELECT></TD>
<TD>IT技术分类明细</TD>
<TD>
</SELECT>
<SELECT name=SubSkill1 >
</SELECT></TD>
</TR>
</table>
</form><html>
》》》》》》》》》》》》》》》》》》》》》》》》》》
prnArr.jsp:<%@page import="java.sql.*" %>
<%@page import="std.*" %>
<%@ page language="java" contentType="text/html;charset=gb2312" %>
<% std.bfstd prn = new std.bfstd(); //数据库连接
ResultSet rs = prn.GetResultBySelect ("select dm,mc from dm_mx where dmm = \'0006\' order by dm ");
out.println("<script language=javascript >");
out.println("list_data=new Array(");
if(rs.next())
{
out.println("\""+rs.getObject(1)+"\",\""+rs.getObject(2)+"\"");
}
while(rs.next())
{
out.println(",\""+rs.getObject(1)+"\",\""+rs.getObject(2)+"\"");
}
out.println(");\n</script>");
%>
》》》》》》》》》》》》》》》》》》》》》》
javascript函数list_change.js://File Name:list_change.js
//Author:ligyi
//Date:2002.2.4
//Note:根据MainList动态改变SubList值./*方法 Mainlist() 功能: 显示MainList的值
入口参数: 数组名,数组开始索引(可选,defualt:0),
MainList项末尾标志(可选,defualt:无),MainList项长度(可选,defualt:无)
出口参数: 无方法 Sublist() 功能: 显示Sublist的值
入口参数: 数组名,MainList名,Sublist名,主、子项末尾差异位数(可选,defualt:2)
出口参数: 无*/function Mainlist()
{
var i,start,step,len,a,EndMark,args=Mainlist.arguments;
a = args[0];
len = a.length;
start = (args.length>=2)?args[1]:0;
step = 2;
EndMark = (args.length>=3)?args[2]:"-1";
Mainlen = (args.length>=4)?args[3]:-1; for(i=start;i<len;i+=step)
{
if (Mainlen != -1)
{
if(a[i].length == Mainlen)
if (EndMark == "-1")
document.writeln("<option value="+a[i]+">"+a[i+1]+"</option>");
else if (a[i].substr(a[i].length - EndMark.length) == EndMark)
document.writeln("<option value="+a[i]+">"+a[i+1]+"</option>");
}
else
{
if (EndMark == "-1")
document.writeln("<option value="+a[i]+">" + a[i+1] + "</option>");
else if (a[i].substr(a[i].length - EndMark.length) == EndMark)
document.writeln("<option value="+a[i]+">"+a[i+1]+"</option>");
} }
}function Sublist()
{
var i,len,start,step,s1,s2,steplen,a,args=Sublist.arguments;
var mainVal,val,name;
a=args[0];
s1=args[1];
s2=args[2];
steplen = (args.length>=4)?args[3]:2;
start=0;
step=2;
len=a.length;
mainVal=s1.options[s1.selectedIndex].value;
for(i=s2.length-1;i>=0;i--)
{
s2.options[i]=null;
}
s2.options[0]=new Option("-请选择-","-1",false,false);
if(Number(mainVal)!=-1)
{
for(i=start;i<len;i+=step)
{
val = a[i];
name = a[i+1];
if(val.length >= mainVal.length && val.substr(0,val.length-steplen)==mainVal.substr(0,val.length-steplen) && val.substr(steplen)!=mainVal.substr(steplen))
{
s2.options[s2.length]=new Option(name,val,false,false);
}
}
}
}