<html><head>
<title>无限级树形菜单</title>
<style>
#A1 td { vertical-align: top; }
#A1 td.bj { font-family: Wingdings; color: #FF9933; text-align: center; }
#A1 td.bj , #A1 td.kg { width: 24; }
#A1 a:link , #A1 a: visited { color: #cc0080; text-decoration: none; }
#A1 a:hover { color: #0ff080; text-decoration: none; }
</style><script language="JavaScript">
//作者:海浪function treeClass(id)
{
this.id = id;
this.HTMLdata = ""; this.start = function() //菜单开始
{
this.HTMLdata += '<table border="0" cellpadding="0" cellspacing="0" width="100%" id="'+this.id+'">';
} this.end = function() //菜单结束
{
this.HTMLdata += '</table>';
} this.m_start = function(name,tt) //菜单组开始
{
this.HTMLdata += '<tr><td class="bj">'+(tt==1?'1':'0')+'</td>';
this.HTMLdata += '<td><a href="#" onclick="zgmm()">'+name+'</a></td>';
this.HTMLdata += '</tr>';
this.HTMLdata += '<tr style="display: '+(tt==1?'block':'none')+';">';
this.HTMLdata += '<td class="bj"> </td>';
this.HTMLdata += '<td>';
this.HTMLdata += '<table border="0" cellpadding="0" cellspacing="0">';
} this.m_end = function() //菜单组结束
{
this.HTMLdata += '</table></td></tr>';
} this.add_Sub = function(name,url,kj) //添加菜单项
{
this.HTMLdata += '<tr><td class="bj">2</td><td>';
this.HTMLdata += '<a target="'+kj+'" href="'+url+'">'+name+'</a>';
this.HTMLdata += '</td></tr>';
} this.print = function() //输出菜单
{
document.write(this.HTMLdata);
}
}function zgmm()
{
var ero = event.srcElement.parentElement.previousSibling;
var mo = event.srcElement.parentElement.parentElement.nextSibling;
mo.style.display = (mo.style.display=="none")?"block":"none";
ero.innerHTML = (mo.style.display=="none")?"0":"1";
}
</script>
</head><body><script language="JavaScript">
// 说明:
// 菜单组开始,m_start(name,tt); name为菜单组名称,tt为1菜单组初始时展开,为0不展开
// 菜单组结束:m_end();
// 添加菜单项:add_Sub("菜单项名称","url地址","框架名");var tObj = new treeClass("A1")
tObj.start();
tObj.m_start("菜单组名称",1);
tObj.m_start("菜单组名称",0);
tObj.add_Sub("菜单项名称","#","_blank");
tObj.m_start("菜单组名称",0);
tObj.m_start("菜单组名称",0);
tObj.add_Sub("菜单项名称,这项太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太太长了,一行显示不了","#","_blank");
tObj.add_Sub("菜单项名称","#","_blank");
tObj.m_end();
tObj.m_start("菜单组名称",0);
tObj.add_Sub("菜单项名称","#","_blank");
tObj.m_end();
tObj.m_end();
tObj.add_Sub("菜单项名称","#","_blank");
tObj.add_Sub("菜单项名称","#","_blank");
tObj.m_end();
tObj.m_start("菜单组名称",0);
tObj.add_Sub("菜单项名称","#","_blank");
tObj.add_Sub("菜单项名称","#","_blank");
tObj.m_end();
tObj.add_Sub("菜单项名称","#","_blank");
tObj.add_Sub("菜单项名称","#","_blank");
tObj.add_Sub("菜单项名称","#","_blank");
tObj.m_end();
tObj.m_start("菜单组名称",0);
tObj.add_Sub("菜单项名称","#","_blank");
tObj.add_Sub("菜单项名称","#","_blank");
tObj.add_Sub("菜单项名称","#","_blank");
tObj.m_end();
tObj.add_Sub("菜单项名称","#","_blank");
tObj.add_Sub("菜单项名称","#","_blank");
tObj.m_start("菜单组名称",0);
tObj.add_Sub("菜单项名称","#","_blank");
tObj.add_Sub("菜单项名称","#","_blank");
tObj.m_start("菜单组名称",0);
tObj.add_Sub("菜单项名称","#","_blank");
tObj.m_end();
tObj.m_end();
tObj.add_Sub("菜单项名称","#","_blank");
tObj.add_Sub("菜单项名称","#","_blank");
tObj.end();
tObj.print();</script></body></html>
PHP mysql web开发 第三版,论坛源码
http://www.xiaofeicn.com/bbs/list.php不过我可不能给你源码~~~
和树形菜单一样原理递归生成!
你打一个一般的论坛源码程序看一下便知!soufun的是比较典型的树形论坛数据库设标题,内容,父节点,是否有了节点等
递归输出,我说的只是论坛,不包括博客!
你找一个论坛源码,改一个就可以了!
<php 和mysql web 开发>第三版 第31章的源码,买书送光盘里有