用JSP+JavaScript打造二级级联下拉菜单

本文介绍如何使用JSP与JavaScript技术创建动态二级级联下拉菜单。通过从数据库获取栏目信息并利用JavaScript动态更新选项,实现了根据用户选择的一级栏目自动加载对应的二级栏目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSP+JavaScript打造二级级联下拉菜单:

class(一级栏目信息):classId(自动编号),className(栏目名称), Nclass(二级栏目信息), NclassId(自动编号),NclassName(栏目名称),parentId(一级栏目id,与class表中的classId关联)

 

<%@ page contentType=text/html;charset=GB2312 language=java errorPage=../error.jsp %>

<%@ include file=../conn.jsp%>

<%@ include file=../ds.jsp%>

<%@ taglib uri=http://java.sun.com/jsp/jstl/sql divfix=sql %>

<%request.setCharacterEncoding(gb2312); %>

<HTML><HEAD>

<METAhttp-equiv=Content-Type content=text/html; charset=gb2312>

 

<TITLE>级联菜单</TITLE>

<LINK rel=stylesheet type=text/css href=style.css>

</HEAD>

<!--从数据库中得到二级栏目信息-->

<%String sql=select* from Nclass order by NclassIdasc;

ResultSet rs=stmt.executeQuery(sql);

%>

<!--将二级栏目信息保存到数组subcat-->

<script type=text/javascript>

var onecount;

onecount=0;

subcat = new Array();

       <%

        int count = 0;

        while(rs.next()){

       %>

subcat[<%=count%>] = new Array(<%=rs.getString(NclassName)%>,

<%=rs.getString(NclassId)%>,<%=rs.getString(parentId)%>);

       <%

        count++;

        }

        rs.close();

       %>

onecount=<%=count%>;

<!--决定select显示的函数-->

function changelocation(locationid)

    {

    document.myform.NclassId.length= 0;

 

    var locationid=locationid;

    var i;

    for(i=0;i < onecount; i++)

        {

           if (subcat[i][2] == locationid)

           {

               document.myform.NclassId.options[document.myform.NclassId.length]= new

Option(subcat[i][0], subcat[i][1]);

           }       

        }

       

    }   

</script>

 

<FORM method=POST name=myformaction=adminsave.jsp?action=add>

 <TABLE>

  

    <TR>

      <TD>一级分类</TD>

      <TD> 

       <SELECT name=classId onChange=changelocation(document.myform.classId.options

[document.myform.classId.selectedIndex].value)size=1>

         <OPTION selected value>==请选一级分类==</OPTION>

        <sql:query var=querydataSource=$>

         SELECT * FROM class

       </sql:query>

<c:forEachvar=row items=$>

 <option value=$>$</option>

</c:forEach>

</select>

      </TD>

      <TD>选择二级分类</TD>

      <TD>

       <SELECT name=NclassId>

         <OPTION selected value>==请选二级分类==</OPTION>

       </SELECT>

      </TD>

    </TR>

</TABLE>

 

</FORM>

</BODY>

</HTML>

<%@ page contentType=text/html;charset=GB2312 language=java errorPage=../error.jsp %>

<%@ include file=../conn.jsp%>

<%@ include file=../ds.jsp%>

<%@ taglib uri=http://java.sun.com/jsp/jstl/sql divfix=sql %>

<%request.setCharacterEncoding(gb2312); %>

<HTML><HEAD>

<METAhttp-equiv=Content-Type content=text/html; charset=gb2312>

 

<TITLE>级联菜单</TITLE>

<LINK rel=stylesheet type=text/css href=style.css>

</HEAD>

<!--从数据库中得到二级栏目信息-->

<%String sql=select* from Nclass order by NclassIdasc;

ResultSet rs=stmt.executeQuery(sql);

%>

<!--将二级栏目信息保存到数组subcat-->

<script type=text/javascript>

var onecount;

onecount=0;

subcat = new Array();

       <%

        int count = 0;

        while(rs.next()){

       %>

subcat[<%=count%>] = new Array(<%=rs.getString(NclassName)%>,

<%=rs.getString(NclassId)%>,<%=rs.getString(parentId)%>);

       <%

        count++;

        }

        rs.close();

       %>

onecount=<%=count%>;

<!--决定select显示的函数-->

function changelocation(locationid)

    {

    document.myform.NclassId.length= 0;

 

    var locationid=locationid;

    var i;

    for(i=0;i < onecount; i++)

        {

           if (subcat[i][2] == locationid)

           {

               document.myform.NclassId.options[document.myform.NclassId.length]= new

Option(subcat[i][0], subcat[i][1]);

           }       

        }

       

    }   

</script>

 

<FORM method=POST name=myformaction=adminsave.jsp?action=add>

 <TABLE>

  

    <TR>

      <TD>一级分类</TD>

      <TD> 

       <SELECT name=classId onChange=changelocation(document.myform.classId.options

[document.myform.classId.selectedIndex].value)size=1>

         <OPTION selected value>==请选一级分类==</OPTION>

        <sql:query var=querydataSource=$>

         SELECT * FROM class

       </sql:query>

<c:forEachvar=row items=$>

 <option value=$>$</option>

</c:forEach>

</select>

      </TD>

      <TD>选择二级分类</TD>

      <TD>

       <SELECT name=NclassId>

         <OPTION selected value>==请选二级分类==</OPTION>

       </SELECT>

      </TD>

    </TR>

</TABLE>

 

</FORM>

</BODY>

</HTML>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值