- 爱易网页
 
                        - 
                            ASP教程
 
                        - 跟我学做树型菜单(二) 
 
                         
                    
                    
                    日期:2013-07-27  浏览次数:21508 次 
                    
                        
                        
            续上篇
  上一篇我们已经确定了树型菜单的功能,数据库结构,以及所要用到的一些函
数。现在可以开始程序的设计了。由于树型菜单要在网页上实现动态展开子树的效
果,所以需要用到DHTML。我们先来分析一下如何在客户端实现这样的动态效果。
一、实现动态菜单的客户端
    在这里,我们先不管ASP的程序,仅来分析一下如何在客户端的网页中实现展
开菜单的动态效果。首先,要展开一个子菜单,可以把子菜单放在一个图层或者一
个表格里,用CSS样式里的dsiplay属性来控制它。如果把display属性设为none,
则隐藏这个菜单;反过来,如果设为一个值,比如block,则显示。有了这种方法,
就可以用JS脚本来控制了。
    1、实际隐藏的菜单。
    现在我们先来做一个这样的菜单,暂时我们还不写脚本程序,只是来显示一下
效果。既然是看效果,就先显示一个只有一个项的二层菜单吧,为了区分不同层次的
菜单,我们把子菜单放在一个表格中,再把这个表格放在上一级菜单所在表格的一个
单元格中。代码如下:
树型菜单1,文件名:tree1.htm
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<html>
<head>
<title>树形菜单1</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
td {  font-size: 12px; font-family: "宋体"}
a:active {  font-size: 12px; text-decoration: none; background-color: #0099FF; font-family: "宋体"}
a:link {  font-size: 12px; text-decoration: none; font-family: "宋体"}
a:hover {  font-size: 12px; text-decoration: none; background-color: #0099FF; font-family: "宋体"}
a:visited {  font-size: 12px; text-decoration: none}
table {  font-size: 12px; font-family: "宋体"}
.cur {  cursor: hand}
.tt {  border-color: #FFFFFF #000000 #000000 #FFFFFF; 
border-style: solid; border-top-width: 1px; border-right-width: 1px; 
border-bottom-width: 1px; border-left-width: 1px}
.s12 {  font-family: "宋体"; font-size: 12px}
.txtbox {  font-family: "宋体"; font-size: 12px; border: 1px solid; height: 18px;
border-color: #000000 #FFFFFF #FFFFFF #000000}
-->
</style>
</head>
<body>
<table width='100%' border=0 cellspacing=0 cellpadding=0>
  <tr height='16' width='100%'>
    <td height='16'>
    <img id='home' src='http://www.163design.net/a/y/images/home.gif'  class='cur' width='16' height='16' align='absmiddle'>
<a href='/photo/index.asp' target='main'>我的电脑</a>
    </td>
  </tr>
  <tr>
    <td height='0' >
<table id='aa' style='display=none' width='100%' border='0' cellspacing='0' cellpadding='0'>
  <tr height='16'>
    <td width='16' height='16'>
    <img src='http://www.163design.net/a/y/images/line_cco.gif' width='16' height='16'>
    </td>
    <td height='16'>
    <img src='http://www.163design.net/a/y/images/fc.gif' width='16' height='16' align='absmiddle'>
  <a href='mgw' target='main'>名古屋</a>
    </td>
  </tr>
</table>
    </td>
  </tr>
</table>
</body>
</html>
</BODY>
</HTML>
为了突出效果,我们在里面加入了CSS来控制不同对象的显示效果。当然,上面的链接都是任意指定的。
显示一下上面的文件,我们可以看到"名古屋“这个子菜单被隐藏了。现在把上面文件中的
<table id='aa' style='display=none' width='100%' border='0' cellspacing='0' cellpadding='0'>
改为
<table id='aa' style='display=block' width='100%' border='0' cellspacing='0' cellpadding='0'>
再显示一下,下一级的菜单也显示出来了。
    2、用脚本来控制菜单的显示。
    刚才我们是通过手工修改子菜单的display属性来实现子菜单的显示的。现在我们来加入脚本进
行控制。只要在脚本里改变子菜单的display属性就可以了。脚本如下:
<script language="JavaScript">
function showhide(subid)
{
  if (subid.style.display=='none')
  {
    subid.style.display='block';
  }
  else
  {
    subid.style.display='none';
  }
}
</script>
然后,我们给在父菜单加上一个动作:
在