这两天接到一个项目,要求是这样的;
菜单只有二级,但是菜单的内容全部是放在mysql数据库的一个菜单中,
字段如下
id menu1 menu2
1 k1 hhh
2 k5 dddd
3 bc dddl
4 k5 lldkd
那么我们首先要取的是一级菜单,k1,k5,bc 有重复的就必须得去掉,
如果采用普通的校验方法,机器肯定要搞死
下面是一级菜单
<select name="menu1" οnchange="choosemenu2(this, (menu2))">
<option value="n">请选择</option>
<%
String str="select *,count(distinct menu1) from menu1 group by menu1";
ResultSet rs=(str);//connbean是一个javabean,如果不会请不要问我,请去看看书。
while(()){
("<option value='"+("menu1")+"'>"+ ("menu1")+"</option>");
}
%>
</select>
<select name="menu2" >
<option value="n">请选择</option>
</select>
//OK 一级菜单出来了
再看看二级菜单怎么做;大家都知道js是在客户端上运行的,而jsp是在服务器上运行的,如果要将js的参数传递到jsp页面上运行,一般采用浏览器传递,一个菜单是通过浏览器来传递,那么就不友好了。
现在我们再说说怎么调用二级菜单。
<script language = "JavaScript">
type2s=new Object();
<%
String str1="select *,count(distinct menu1) from classify group by menu1";
ResultSet rs1=(str1);
while(()){
str1="select*from classify where menu1='"+("menu1")+"'";
ResultSet rs2=(str1);
if(()){
();
int rowcount=();
String sz="type2s['"+("menu1")+"']=new Array(";
for(int k=1;k<=rowcount;k++){
(k);
if(k<rowcount){
sz+="'"+("menu2")+"',";
}else {
sz+="'"+("menu2")+"');";
}
}
(sz);
}
}
%>
function choosetype2(type1,type2){
var t1,t2;
var i,ii;
t1=;
t2=;
=1;
if(t1=='0') return;
if(typeof(type2s[t1])=='undefined') return;
for(i=0; i<type2s[t1].length; i++)
{
ii = i+1;
[ii] = new Option();
[ii].text = type2s[t1][i];
[ii].value = type2s[t1][i];
}
}
</script>