您的位置:首页 > Web前端 > JavaScript

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

2006-02-23 11:31 826 查看
演示地址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">
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: