if (sqlRst != null) { int i = 0; while (sqlRst.next()){ String[] sList = new String[2]; product_kind=sqlRst.getString ("product_kind"); product_kind_name=sqlRst.getString ("product_kind_name"); sList[0]=product_kind; sList[1]=product_kind_name; //out.print(sList[0]+sList[1]); list.add(sList);//ArrayList:小类
} }
%> <%sqlRst=sqls.executeQuery(sql);
if (sqlRst != null) { int i = 0; while (sqlRst.next()){ String[] sList = new String[2]; product_kind=sqlRst.getString ("product_kind"); product_kind_name=sqlRst.getString ("product_kind_name"); sList[0]=product_kind; sList[1]=product_kind_name; //out.print(sList[0]+sList[1]); list1.add(sList);//ArrayList:大类
} }
%> <script language="javascript"> function lTrim(str) { if (str.charAt(0) == " ") { //如果字串左边第一个字符为空格 str = str.slice(1);//将空格从字串中去掉 //这一句也可改成 str = str.substring(1, str.length); str = lTrim(str); //递归调用 } return str; }//去掉字串右边的空格 function rTrim(str) { var iLength;iLength = str.length; if (str.charAt(iLength - 1) == " ") { //如果字串右边第一个字符为空格 str = str.slice(0, iLength - 1);//将空格从字串中去掉 //这一句也可改成 str = str.substring(0, iLength - 1); str = rTrim(str); //递归调用 } return str; }//去掉字串两边的空格 function trim(str) { return lTrim(rTrim(str)); } function InitsmallClass() { province = new Array(); <% for (int i=0; i<list.size(); i++) { temp = (String[])list.get(i); %> province[<%=i%>]=new Array(); province[<%=i%>][0]=" <%=temp[0]%>"; province[<%=i%>][1]=" <%=temp[1]%>"; //alert(province[<%=i%>][1]); <%}%> }
function InitBigClass() { prov = new Array(); <% for (int i=0; i<list1.size(); i++) { temp1 = (String[])list1.get(i); %> prov[<%=i%>]=new Array(); prov[<%=i%>][0]=" <%=temp1[0]%>"; prov[<%=i%>][1]=" <%=temp1[1]%>"; // alert(prov[<%=i%>][1]); <%}%> }
先做一些Servlet专门用于生成XML页面
然后用JS调XMLDOM去取这些XML页面,然后JS解析XML,更新下拉框的选项。可参考下面的页面
http://202.102.240.71/nyist_xfz/tjbb/wpjxs/index.html
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=181438
我拷贝的
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
var arrItems1 = new Array();
var arrItemsGrp1 = new Array();arrItems1[3] = "Truck";
arrItemsGrp1[3] = 1;
arrItems1[4] = "Train";
arrItemsGrp1[4] = 1;
arrItems1[5] = "Car";
arrItemsGrp1[5] = 1;arrItems1[6] = "Boat";
arrItemsGrp1[6] = 2;
arrItems1[7] = "Submarine";
arrItemsGrp1[7] = 2;arrItems1[0] = "Planes";
arrItemsGrp1[0] = 3;
arrItems1[1] = "Ultralight";
arrItemsGrp1[1] = 3;
arrItems1[2] = "Glider";
arrItemsGrp1[2] = 3;var arrItems2 = new Array();
var arrItemsGrp2 = new Array();arrItems2[21] = "747";
arrItemsGrp2[21] = 0
arrItems2[22] = "Cessna";
arrItemsGrp2[22] = 0arrItems2[31] = "Kolb Flyer";
arrItemsGrp2[31] = 1
arrItems2[34] = "Kitfox";
arrItemsGrp2[34] = 1arrItems2[35] = "Schwietzer Glider";
arrItemsGrp2[35] = 2arrItems2[99] = "Chevy Malibu";
arrItemsGrp2[99] = 5
arrItems2[100] = "Lincoln LS";
arrItemsGrp2[100] = 5
arrItems2[57] = "BMW Z3";
arrItemsGrp2[57] = 5arrItems2[101] = "F-150";
arrItemsGrp2[101] = 3
arrItems2[102] = "Tahoe";
arrItemsGrp2[102] = 3arrItems2[103] = "Freight Train";
arrItemsGrp2[103] = 4
arrItems2[104] = "Passenger Train";
arrItemsGrp2[104] = 4arrItems2[105] = "Oil Tanker";
arrItemsGrp2[105] = 6
arrItems2[106] = "Fishing Boat";
arrItemsGrp2[106] = 6arrItems2[200] = "Los Angelas Class";
arrItemsGrp2[200] = 7
arrItems2[201] = "Kilo Class";
arrItemsGrp2[201] = 7
arrItems2[203] = "Seawolf Class";
arrItemsGrp2[203] = 7function selectChange(control, controlToPopulate, ItemArray, GroupArray)
{
var myEle ;
var x ;
// Empty the second drop down box of any choices
for (var q=controlToPopulate.options.length;q>=0;q--) controlToPopulate.options[q]=null;
if (control.name == "firstChoice") {
// Empty the third drop down box of any choices
for (var q=myChoices.thirdChoice.options.length;q>=0;q--) myChoices.thirdChoice.options[q] = null;
}
// ADD Default Choice - in case there are no values
myEle = document.createElement("option") ;
myEle.value = 0 ;
myEle.text = "[SELECT]" ;
controlToPopulate.add(myEle) ;
for ( x = 0 ; x < ItemArray.length ; x++ )
{
if ( GroupArray[x] == control.value )
{
myEle = document.createElement("option") ;
myEle.value = x ;
myEle.text = ItemArray[x] ;
controlToPopulate.add(myEle) ;
}
}
}
// End -->
</script>
<form name=myChoices>
<table align="center">
<tr>
<td>
<SELECT id=firstChoice name=firstChoice onchange="selectChange(this, myChoices.secondChoice, arrItems1, arrItemsGrp1);">
<option value=0 SELECTED>[SELECT]</option>
<option value=1>Land</option>
<option value=2>Sea</option>
<option value=3>Air</option>
</SELECT>
</TD><TD>
<SELECT id=secondChoice name=secondChoice onchange="selectChange(this, myChoices.thirdChoice, arrItems2, arrItemsGrp2);">
</SELECT>
<SELECT id=thirdChoice name=thirdChoice>
</SELECT>
</TD>
</TR>
</TABLE>
</form>
我按照上面的改的二级级联菜单
<%@ page contentType="text/html;charset=GBK"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.text.*"%>
<%@page import="java.util.Date"%>
<%@page import="DataBase.*"%>
<%
ResultSet rs=null;
String depid="";
opendb op=null;
String departmentid="";
int count=0;
String name1="";
try{
op=new opendb();
%><SCRIPT LANGUAGE="JavaScript">
<!-- Begin
var arrItems1 = new Array();
var arrItemsGrp1 = new Array();
<%
rs=op.getdb("select name,operator_id,usercount,department_id from tb_operator");
while(rs.next()){
count++;
name1=rs.getString("usercount");
%>
arrItems1[<%=count%>] = <%="\""+name1+"\""%>;
arrItemsGrp1[<%=count%>] = <%=rs.getInt("department_id")%>;
<%}rs.close();
%>function selectChange(control, controlToPopulate, ItemArray, GroupArray)
{
var myEle ;
var x ;
// Empty the second drop down box of any choices
for (var q=controlToPopulate.options.length;q>=0;q--) controlToPopulate.options[q]=null;myEle = document.createElement("option") ;
myEle.value = 0 ;
myEle.text = "[SELECT]" ;
controlToPopulate.add(myEle) ;
for ( x = 0 ; x < ItemArray.length ; x++ )
{
if ( GroupArray[x] == control.value )
{
myEle = document.createElement("option") ;
myEle.value = x ;
myEle.text = ItemArray[x] ;
controlToPopulate.add(myEle) ;
}
}
}
// End -->
</script><form name=myChoices>
<table align="center">
<tr>
<td>
<SELECT id=firstChoice name=firstChoice onchange="selectChange(this, myChoices.secondChoice, arrItems1, arrItemsGrp1);">
<option value=0 SELECTED>[SELECT]</option>
<%rs=op.getdb("select department_id,department_name from tb_department ");
while(rs.next())
{%>
<option value=<%=rs.getInt("department_id")%>><%=rs.getString("department_name")%></option>
<%}rs.close();%>
</SELECT>
</TD><TD>
<SELECT id=secondChoice name=secondChoice >
</SELECT>
</TD>
</TR>
</TABLE>
</form>
<%
} finally{
op.conclose();
}%>
<SELECT NAME="s1"><option>需要JavaScript才能正确显示</SELECT>
<SELECT NAME="s2"></SELECT>
<SELECT NAME="s3"></SELECT>
<SELECT NAME="s4"></SELECT>
<SCRIPT LANGUAGE="JavaScript">
<!--
//选择框的名字
selector = [ "s1", "s2", "s3", "s4" ];
//选择项: "名字", "值", 子选择
menu = [
"地球","1",
[
"中国","86",
[
"北京","BJ",
[
"--","1",null
],
"四川","SC",
[
"成都","28",null,
"乐山","",null,
"攀枝花","",null,
"自贡","",null,
"德阳","",null,
"绵阳","",null
]
],
"米国","1",
[
"加利福尼亚","CA",
[
"旧金山","1",null,
"洛杉矶","2",null
],
"华盛顿","WA",
[
"西雅图","seattle",null
]
]
],
"火星","2",
[
"大峡谷","86",
[
"小山丘","BJ",
[
"A地区","28",null,
"B地区","",null,
"C地区","",null
]
]
]
];function wizz(level)
{
if( level == 0 )
a = menu;
else
{
str = "menu";
for( i=0; i<level; i++ )
str += "[" + (document.all[selector[i]].selectedIndex * 3 + 2) + "]";
a = eval(str);
}
if( a == null ) return;
s = document.all[selector[level]];
i = s.length;
while( i > 0 ) s.options[--i] = null;
while( i < Math.floor(a.length/3) )
s.options[i] = Option( a[i*3], a[i++*3+1] );
s.onchange = Function("wizz(" + (level+1) + ")");
wizz(level+1);
}
wizz(0);
//-->
</SCRIPT>
</BODY>
</HTML>
然后再根据要求显示;
级联的dd,csdn上很多的,搜一下,我就是这样做的,祝好运!
if (sqlRst != null)
{
int i = 0;
while (sqlRst.next()){
String[] sList = new String[2];
product_kind=sqlRst.getString ("product_kind");
product_kind_name=sqlRst.getString ("product_kind_name");
sList[0]=product_kind;
sList[1]=product_kind_name;
//out.print(sList[0]+sList[1]);
list.add(sList);//ArrayList:小类
}
}
%>
<%sqlRst=sqls.executeQuery(sql);
if (sqlRst != null)
{
int i = 0;
while (sqlRst.next()){
String[] sList = new String[2];
product_kind=sqlRst.getString ("product_kind");
product_kind_name=sqlRst.getString ("product_kind_name");
sList[0]=product_kind;
sList[1]=product_kind_name;
//out.print(sList[0]+sList[1]);
list1.add(sList);//ArrayList:大类
}
}
%>
<script language="javascript">
function lTrim(str)
{
if (str.charAt(0) == " ")
{
//如果字串左边第一个字符为空格
str = str.slice(1);//将空格从字串中去掉
//这一句也可改成 str = str.substring(1, str.length);
str = lTrim(str); //递归调用
}
return str;
}//去掉字串右边的空格
function rTrim(str)
{
var iLength;iLength = str.length;
if (str.charAt(iLength - 1) == " ")
{
//如果字串右边第一个字符为空格
str = str.slice(0, iLength - 1);//将空格从字串中去掉
//这一句也可改成 str = str.substring(0, iLength - 1);
str = rTrim(str); //递归调用
}
return str;
}//去掉字串两边的空格
function trim(str)
{
return lTrim(rTrim(str));
}
function InitsmallClass()
{
province = new Array();
<% for (int i=0; i<list.size(); i++) {
temp = (String[])list.get(i);
%>
province[<%=i%>]=new Array();
province[<%=i%>][0]=" <%=temp[0]%>";
province[<%=i%>][1]=" <%=temp[1]%>";
//alert(province[<%=i%>][1]);
<%}%>
}
function InitBigClass()
{
prov = new Array();
<% for (int i=0; i<list1.size(); i++) {
temp1 = (String[])list1.get(i);
%>
prov[<%=i%>]=new Array();
prov[<%=i%>][0]=" <%=temp1[0]%>";
prov[<%=i%>][1]=" <%=temp1[1]%>";
// alert(prov[<%=i%>][1]);
<%}%>
}
InitBigClass();
InitsmallClass();function changeprovince(myfrm)
{ var selectedprovinceid,i,j;
for(i=Link.pkind.options.length-1;i>=0;--i)
{
Link.pkind.options[i]=null; //清空改变之前
}
selectedprovinceid=Link.select2.options[Link.select2.selectedIndex].value; //获取改变后的
//alert(selectedprovinceid);
selectedprovinceid=trim(selectedprovinceid)
j=0;
for(i=0;i<province.length;i++)
{
var pro
pro=province[i][0];
pro =trim(pro.substring(1,4));
//alert(pro);
if(selectedprovinceid==pro)
{
//alert("????");
Link.pkind.options[j]=new Option(trim(province[i][1]),trim(province[i][0]));//1改成0
//alert(Link.pkind.options[j].value);
++j;
}
}
}
</script>
明天是元旦,祝愿大家新年快乐家庭幸福事业美满。
特别感谢killerdanny,谢谢你的JSP例子。