再显示一下,下一级的菜单也显示出来了。
2、用脚本来控制菜单的显示。
刚才我们是通过手工修改子菜单的display属性来实现子菜单的显示的。现在我们来加入脚本进
行控制。只要在脚本里改变子菜单的display属性就可以了。脚本如下:
function showhide(subid)
{
if (subid.style.display=='none')
{
subid.style.display='block';
}
else
{
subid.style.display='none';
}
}
然后,我们给在父菜单加上一个动作:
在
的后面加上:
onclick="showhide(aa)"
现在再显示一下这个网页,然后点击“我的电脑”前的图片,就可以看到子菜单的显示和隐藏的效果了。
3、完整的脚本控制
上面我们已经实现了子菜单的显示和隐藏,但是上面的是只有两个菜单项的情况,实际的情况要
比上面的复杂。我们来分析一个典型的情况:每个菜单(除了根菜单)外,都有三项内容:
1)连接的树型图:可能是“+”或者“-”或者其它的几种连线。如果是“+”或者“-”,就要给它加上链接
点击后展开下一级菜单。根菜单没有这一项。
2)图标:根菜单是电脑的图样,其它的菜单是文件夹的图样。同样也要加上链接来展开下一级菜单。
3)文字:菜单的显示文字,点击后指向一个新链接。
对于每一级菜单,我们按一定的方式进行编号,以便在ASP程序中生成:用L表示行,用R表示列。对于某个
菜单,上面的第一项(连接图)标为第一个;第二项(图标)标为第二个;它的子菜单所在的表格,标为第
三个。示意图如下
----------------------
| L1R1 | L1R2 | 文字 |
----------------------
| | --L2R2------|
| | | |
| | | |
| | | |
| | |-----------|
----------------------
根据上面的结构图,我们来改进一下网页,一是每个菜单的连接图和图标都要加上点击的动作,二是脚本
程序要修改一下。对于根菜单,没有第一项,所有点击的动作里前两项留空。下面是一个典型的例子:
树形菜单
function showhide(self,btnid,subid)
{
if (subid.style.display=='none')
{
subid.style.display='block';
if (btnid!=='')
btnid.src='images/fo.gif';
if (self!=='')
{
sr=self.src;
//len=sr.length;
var str1="images/cc.gif"
var str2='images/ctc.gif'
//alert(sr);
if (sr.indexOf(str1)!==(-1))
sr=sr.replace('images/cc.gif','images/co.gif');
else
{
if (sr.indexOf(str2)!==(-1))
sr=sr.replace('images/ctc.gif','images/cto.gif');
}
//alert(sr);
self.src=../../sr;
}
}
else
{
subid.style.display='none';
if (btnid!=='')
btnid.src='images/fc.gif';
if (self!=='')
{
sr=self.src;
//len=sr.length;
var str1="images/co.gif"
var str2='images/cto.gif'
//alert(sr);
if (sr.indexOf(str1)!==(-1))
sr=sr.replace('images/co.gif','images/cc.gif');
else
{
if (sr.indexOf(str2)!==(-1))
sr=sr.replace('images/cto.gif','images/ctc.gif');
}
self.src=../../sr;
}
}
}
到上面为止,我们已经在网页中实现了多级菜单的显示,并且可以用脚本来控制了。剩下的就是如何用ASP程序生成这样的网页了。
下一篇,我们将用递归的方法,来生成这样的菜单。