为了方便使用分类我定义了一个分类表category里面字段是
id(自动编号) cat_name(分类名) parent_id(父ID对应本表ID) cat_order(顺序) is_show(是否显示) u_id(这个用来区别是新闻分类还是产品分类还是其他分类)为了方便我将这些分类全部放在这张表中
在给客户添加分类的时候结果有太多的分类本来前台显示的时候将它们全部显示出来了好长客户提出修改意见要求将它们改成点击大分类才可以将其子分类显示出来并且每个分类下面还有一条虚线并且大分类前面有个图片加号展开后要变成减号
<script>
function fd(idnum)
{
t=$(c+id+_)styledisplay;
if(t==none)
{
t=block;
t=images/fll_gif;
}
else
{
t=none;
t=images/fll_gif;
}
for(i=;i<=num;i++)
{
$(c+id+_+i)styledisplay=t;
$(d_+id)src=t;
}
}
function $(id)
{
return documentgetElementById(id);
}
</script>
这是asp无限级显示分类代码并给这些分类加上id
<%
功能asp无限级显示分类+js显示与隐藏
作者wangsdong
开发
参数parent_id为父IDstype为新闻产品文章大分类
function cat(parent_idstype)
set rs =servercreateobject(adodbrecordset)
sql=select cat_namecat_idparent_id from category where parent_id=&parent_id& and u_id=&stype& and is_show= order by cat_order asc
set rs=connexecute(sql)
If rseof Then
Else
if(depath>) then
display=none
else
display=block
end if
dim j
j=
do while not rseof
cat_name = rs(cat_name)
cat_id = rs(cat_id)
parent_id=rs(parent_id)
******************下面是你要显示的******************
m=
sql=select count(cat_id) as t from category where parent_id=&cat_id& and u_id=&stype&
set rs=servercreateobject(adodbrecordset)
set rs=connexecute(sql)
if not rseof then
m=rs(t)
else
m=
end if
rsclose
if(depath<=) then
mgif=images/gif
a=block
else
if(m>) then
mgif=images/+gif
else
mgif=images/gif
end if
if(depath=) then
a=block
else
a=none
end if
end if
catstr=catstr & <tr id=c&parent_id&_&j& display:&a&><td width= align=center valign=middle class=dotted_class><img src=&mgif& width= height= id=d_&cat_id&></td><td class=dotted_class leftcatcss>
if(m>) then
catstr=catstr&<a javascript:void(); _fcksavedurl=javascript:void(); _fcksavedurl=javascript:void(); onclick=fd(&cat_id&&m&)> &vbnewline
else
catstr=catstr&<a &cat_id& target=_blank>&vbnewline
end if
for i= to depath
catstr=catstr&
Next
catstr=catstr&cat_name&</a></td></tr>&vbnewline
m=
sql=select cat_namecat_id from category where parent_id=&parent_id& and u_id=&stype& order by cat_order asc
set rs=servercreateobject(adodbrecordset)
set rs=connexecute(sql)
if not rseof then
depath=depath+
call cat(cat_idstype)
end if
rsclose
set rs=nothing
depath=depath
******************上面是你要显示的******************
j=j+
rsmovenext
loop
End If
rsclose
set rs=nothing
end Function
%>
在使用这个函数之前加上
catstr=
然后再call下面的虚线加在css中的dotted_class里面这样就搞定了
注意这里得到的是一个表格的行要和其他行放在一起不要加到td里面去了