当前位置:K88软件开发文章中心编程语言AspAsp01 → 文章内容

asp无限级分类加js收缩伸展功能代码

减小字体 增大字体 作者:wangsdong     来源:asp编程网  发布时间:2018-12-30 8:32:46

为了方便使用分类,我定义了一个分类表category,里面字段是
id(自动编号) 
cat_name(分类名) parent_id(父ID,对应本表ID) cat_order(顺序) is_show(是否显示)  
u_id(这个用来区别是新闻分类,还是产品分类,还是其他分类),为了方便,我将这些分类全部放在这张表中。
在给客户添加分类的时候,结果有太多的分类,本来前台显示的时候,将它们全部显示出来了,好长。客户提出修改意见,要求将它们改成点击大分类,才可以将其子分类显示出来,并且每个分类下面还有一条虚线,并且大分类前面有个图片加号,展开后要变成减号。
<
script>

function fd(id,num)

{
 
t=$("
c"
+id+"
_1"
).style.display

 

 
if(t=="
none"
)
 

{
 
 
t1="
block"


 
 
t2="
images/fll_34.gif"


 
}
 
else
 

{
 
 
t1="
none"

 

 
 
t2="
images/fll_34.gif"


 
}
 
for(i=1
i<
=num
i++)
 

{
 
 
$("
c"
+id+"
_"
+i).style.display=t1

 
 
$("
d_"
+id).src=t2
 
 

 
}
}
function $(id)

{
 
return document.getElementById(id)

}
<
/script>

这是asp无限级显示分类代码,并给这些分类加上id

<
%
'功能:asp无限级显示分类+js显示与隐藏
'作者:wangsdong
'开发:www.aspprogram.cn
'参数:parent_id为父ID,stype为新闻,产品,文章大分类
'
function cat111(parent_id,stype)
set rs1 
=server.createobject("
adodb.recordset"
)
sql="
select cat_name,cat_id,parent_id from category where parent_id="
&
parent_id&
"
and u_id="
&
stype&
"
and is_show=1 order by cat_order asc"

set rs1=conn.execute(sql)
If rs1.eof Then
Else 

if(depath>
2) then
 
display2="
none"
 
 
 
 
 

else
 
display2="
block"
 

end if 
 

dim j
j=1
do while not rs1.eof 

 
cat_name1 = rs1("
cat_name"
)
 
cat_id1 = rs1("
cat_id"

 

 
parent_id1=rs1("
parent_id"


 
'******************下面是你要显示的******************' 

 
m9=0
 
sql2="
select count(cat_id) as t from category where parent_id="
&
cat_id1&
"
and u_id="
&
stype&
"
"
 
 
 
 

 
set rs2=server.createobject("
adodb.recordset"
)
 
set rs2=conn.execute(sql2) 

 
if not rs2.eof then
 
 
 
m9=rs2("
t"
)
 
else
 
 
m9=0 
 

 
end if 

 
rs2.close
 
 

 
if(depath<
=2) then 
 

 
 
mgif="
images/-.gif"

 
 
a="
block"

 
else
 
 
if(m9>
0) then 

 
 
mgif="
images/+.gif"
 

 
 
else
 
 
mgif="
images/-.gif"

 
 
end if
 
 
if(depath=4) then
 
 
 
a="
block"

 
 
else 
 

 
 
 
a="
none"

 
 
end if
 
end if 
 

 

 

 
catstr=catstr &
"
<
tr id="
"
c"
&
parent_id&
"
_"
&
j&
"
"
"
style="
"
display:"
&
a&
"
"
"
>
<
td width="
"
25"
"
align="
"
center"
"
valign="
"
middle"
"
class="
"
dotted_class"
"
>
<
img src="
"
"
&
mgif&
"
"
"
width="
"
12"
"
height="
"
11"
"
id="
"
d_"
&
cat_id1&
"
"
"
>
<
/td>
<
td class="
"
dotted_class leftcatcss"
"
>
"

 
if(m9>
0) then
 
 
catstr=catstr&
"
<
a href="
"
javascript:void(0)
"
"
onclick="
"
fd("
&
cat_id1&
"
,"
&
m9&
"
)"
"
>
"
 
&
vbnewline
 
else
 
 
catstr=catstr&
"
<
a href="
"
products.asp?id="
&
cat_id1&
"
"
"
target="
"
_blank"
"
>
"
&
vbnewline
 
end if
 
for i=1 to depath
 
 
catstr=catstr&
"
&
nbsp
"

 
Next
 
catstr=catstr&
cat_name1&
"
<
/a>
<
/td>
<
/tr>
"
&
vbnewline
 
m9=0
 
 
 
 
 

 
sql2="
select cat_name,cat_id from category where parent_id="
&
parent_id1&
"
and u_id="
&
stype&
"
order by cat_order asc"
 
 
 
 

 
set rs2=server.createobject("
adodb.recordset"
)
 
set rs2=conn.execute(sql2)
 
if not rs2.eof then
 
 
 
depath=depath+4 

 
 
 
call cat111(cat_id1,stype)
 
end if
 
rs2.close 

 
set rs2=nothing 

 
depath=depath-4 

 
'******************上面是你要显示的******************'
 
j=j+1
rs1.movenext
loop
End If
rs1.close
set rs1=nothing
end Function
%>

在使用这个函数之前加上
catstr="
"

然后再call,下面的虚线加在css中的dotted_class里面,这样就搞定了。
注意:这里得到的是一个表格的行,要和其他行放在一起,不要加到td里面去了。

源码下载地址:http://www.aspprogram.cn/html/soft/20091225160816.html



asp无限级分类加js收缩伸展功能代码