ASP + 数据库 + JavaScript 实现动态无限级联动菜单

演示地址http://www.why9.com/sort/

CREATE TABLE [pp_Sort] (
 [id] [int] IDENTITY (1, 1) NOT NULL ,
 [name] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
 [upperid] [int] NULL CONSTRAINT [DF_pp_Sort_upperid] DEFAULT (0),
 [depth] [int] NULL CONSTRAINT [DF_pp_Sort_depth] DEFAULT (0),
) ON [PRIMARY]
GO


<!--#include file="inc/conn.asp"-->
<%Set conn = con()%>
<%
dim b
  b=1
  Response.Write("<script>"&vbcrlf&"var mary=new Array();"&vbcrlf&"var loopary=new Array();"&vbcrlf)
  
    dim sqlc,tempstr
    tempstr=""
    sqlc="select upperid,count(upperid) as nums from pp_sort group by upperid"
    set rscount=conn.execute(sqlc)
    do while not rscount.eof
    tempstr=tempstr&rscount("upperid")&","
     Response.Write(vbcrlf&"loopary["&rscount("upperid")&"]="&rscount("nums")&";")
     Response.Write(vbcrlf&"mary["&rscount("upperid")&"]=new Array();")
    rscount.movenext
    loop
    Response.Write("var uppers="""&left(tempstr,len(tempstr)-1)&""";"&vbcrlf)
    rscount.close
    dim RsSort
    set RsSort=server.createobject("adodb.recordset")    
    sql="select * from pp_sort  order by id asc"
    RsSort.open sql,conn,3,1
    do while Not RsSort.Eof         
     Response.Write("mary["&rssort("upperid")&"]["&b&"]="""&rssort("name")&""";"&vbcrlf)
     b=b+1
    RsSort.MoveNext
    loop
    RsSort.Close
    Set RsSort = Nothing    
  dim sqlmaxdepth
  sqlmaxdepth="select max(depth) as dpt from pp_sort "
  set rsmaxdepth=conn.execute(sqlmaxdepth)
  if not rsmaxdepth.eof then
  maxdepth=rsmaxdepth("dpt")
  else
  maxdepth=0
  end if
  rsmaxdepth.close
   Response.Write("</script>")
Response.Write("<select id=""mainsel"" onChange=""dosel(this.options[this.selectedIndex].value,this.nextSibling);dodisplay(1);setmainval(this.options[this.selectedIndex].value)"" style=""display:none""><option>--请选择--</option></select>")
for j=1 to maxdepth-1
Response.Write("<select id=""mainsel"" onChange=""dosel(this.options[this.selectedIndex].value,this.nextSibling);dodisplay("&j+1&");setmainval(this.options[this.selectedIndex].value)"" style=""display:none""><option>--请选择--</option></select>")
next
Response.Write("<select id=""mainsel"" onChange=""setmainval(this.options[this.selectedIndex].value);"" style=""display:none""><option selected>--请选择--</option></select>")
%>
<script language="javascript">
var checkary
checkary=uppers.split(",")
function dodisplay(id)
{
 for(var k=0;k<document.all.mainsel.length;k++)
 {
 document.all.mainsel[k].style.display="none"
 }
 for(var k=0;k<id+1;k++)
 {
  if(document.all.mainsel[k].length>1)
  {
  document.all.mainsel[k].style.display="block"
  }
 }
 for(var k=id+1;k<document.all.mainsel.length;k++)
 {
 document.all.mainsel[k].length=1
 }
}
function docheckisshow(b,tobj)
{
 var bl=false
 for(var k=0;k<checkary.length;k++)
 {
  if(checkary[k]==b)
  {
  bl=true
  break;
  }
  else
  {
  bl=false
  }
 }
 if(bl)
 {
 tobj.nextSibling.style.display="block"
 }
}
function dosel(id,tobj)
{
 var b=id
 var bl=false
 for(var k=0;k<checkary.length;k++)
 {
  if(checkary[k]==b)
  {
  bl=true
  break;
  }
  else
  {
  bl=false
  }
 }
 if(bl)
 {
  tobj.options.length=1
  for(var j=0;j<mary[b].length;j++)
  {
   if(mary[b][j]!=""&&mary[b][j]!=null)
   {
   tobj.options[tobj.length] = new Option(mary[b][j],j)
   }
  }
 }
 else
 {
 tobj.options[0]=new Option("--请选择--","")
 }
}
document.all.mainsel[0].style.display="block"

for(var j=0;j<mary[0].length;j++)
{
 if(mary[0][j]!=""&&mary[0][j]!=null)
 {
 document.all.mainsel[0].options[document.all.mainsel[0].length] = new Option(mary[0][j],j)
 }
}

function setmainval(id)
{
document.all.sortid.value=id
}

function docheckthis(val)
{
 for(var k=0;k<checkary.length;k++)
 {
  if(checkary[k]==val)
  {
  alert("error select")
   return false
   break;
  }
  else
  {
  return true
  }
 }
}
</script>
<input type="hidden" name="sort" id="sort">

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值