此代码比较常用,比较简单的二级联动下拉列表分类。ASP+JS+数据库实现。
这是我使用的比较早的联动分类,近期做了简单的完善。
有什么问题,与我联系吧!
这个版本,支持多浏览器!
泡泡ASP相关代码: <% ’************************************************** ’常用二级分类下拉列表[数据库版] ’叶随风(LeafinWind) ’QQ:19855466 ’http://www.popasp.com/ ’说明: ’支持多浏览器 ’所有类别信息在同一个表中 ’表结构:InfoClass[表名] ’ID: 自动编号 ’ClassName: 类别名称[文本] ’PID: 父类id号[数字] ’ClassIndex: 类别索引[数字],用于排序,可有可无 ’************************************************** Dim SubClsCount, rsCl Set rsCl = Server.Createobject("Adodb.Recordset") rsCl.Open "Select * From [InfoClass] Where PID <> 0 Order By ClassIndex, ID",Conn,1,1 ’小类 %> <script language = "JavaScript"> var TCount = 0; subCls = new Array(); <% SubClsCount = 0 Do While Not rsCl.Eof %> //数组中三个元素的说明:(小类ID:小类Select的value内容,小类父ID:所属的大类的ID,小类名称:Select列表显示的内容) subCls[<%=SubClsCount%>] = new Array("<%=Trim(rsCl("ID"))%>","<%=rsCl("PID")%>","<%=Trim(rsCl("ClassName"))%>"); <% SubClsCount = SubClsCount + 1 rsCl.Movenext Loop rsCl.Close Set rsCl = Nothing %> TCount=<%=SubClsCount%>; function changelocation(locationid) { document.getElementById("SmallClassID").length = 0; var locationid = locationid; var i; for (i=0;i < TCount; i++) { if (subCls[i][1] == locationid) { //(前边:字段三内容,显示在列表中;后边:字段一内容,显示在VALUE值中!) document.getElementById("SmallClassID").options[document.getElementById("SmallClassID").length] = new Option(subCls[i][2], subCls[i][0]); } } if (document.getElementById("SmallClassID").options.length <= 0) { document.getElementById("SmallClassID").options[document.getElementById("SmallClassID").length] = new Option("暂无小类", 0); } } </script> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>ASP+JS的二级分类</title> </head> <body"> <% Dim SelClassID Set rsCl = Server.Createobject("Adodb.Recordset") rsCl.Open "Select * From [InfoClass] Where PID = 0 Order By ClassIndex, ID",Conn,1,1 ’大类 If rsCl.Eof And rsCl.Bof Then Response.Write "请添加顶级(大)类别!" Response.End() Else %> 大类: <select name="BigClassID" size="1" id="BigClassID" onChange="changelocation(document.getElementById(’BigClassID’).options[document.getElementById(’BigClassID’).selectedIndex].value)"> <% SelClassID = rsCl("ID") Do While Not rsCl.Eof %> <option value="<%=rsCl("ID")%>"><%=rsCl("ClassName")%></option> <% rsCl.Movenext Loop %> </select> <% End If rsCl.Close %> 小类: <% Dim SmallClassList SmallClassList = "<select name=SmallClassID id=SmallClassID>" rsCl.Open "Select * From [InfoClass] Where PID = "&SelClassID&" Order By ClassIndex, ID" ,Conn,1,1 ’小类 If Not (rsCl.Eof And rsCl.Bof) Then Do While Not rsCl.Eof SmallClassList = SmallClassList & "<option value=’"&rsCl("ID")&"’>"&rsCl("ClassName")&"</option>" rsCl.Movenext Loop Else SmallClassList = SmallClassList & "<option value=’0’>暂无小类</option>" End If rsCl.Close Set rsCl = Nothing SmallClassList = SmallClassList & "</select>" Response.Write(SmallClassList) %> </body> </html> |
里边的变量或字段名,自己根据需要修改,呵呵……修改时,一定要注意细节部分,避免发生不必要的错误。