这是以前论坛上的一个例子,现在拿出来看,发现function zgmm()不太懂,哪位可以解释下里面元素的意思吗?ero.innerHTML是做什么的?程序其他部分也顺便提下,谢谢。
<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 m_start(name,tt) //菜单组开始
{
document.writeln('<tr><td class="bj">'+(tt==1?'1':'0')+'</td>');
document.writeln('<td><a href="#" onclick="zgmm()">'+name+'</a></td>');
document.writeln('</tr>');
document.writeln('<tr style="display: '+(tt==1?'block':'none')+';">');
document.writeln('<td class="bj"> </td>');
document.writeln('<td>');
document.writeln('<table border="0" cellpadding="0" cellspacing="0">');
}function m_end() //菜单组结束
{
document.writeln('</table></td></tr>');
}function add_Sub(name,url,kj) //添加菜单项
{
document.writeln('<tr><td class="bj">2</td><td>');
document.writeln('<a target="'+kj+'" href="'+url+'">'+name+'</a>');
document.writeln('</td></tr>');
}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><table border="0" cellpadding="0" cellspacing="0" width="100%" id="A1">
<script language="JavaScript">
// 说明:
// 菜单组开始,m_start(name,tt); name为菜单组名称,tt为1菜单组初始时展开,为0不展开
// 菜单组结束:m_end();
// 添加菜单项:add_Sub("菜单项名称","url地址","框架名");
m_start("time",0);
m_start("1.1",0);
m_start("1.1.1",0);
add_Sub("1.1.1.1","http://www.17173.com/","_blank");
add_Sub("1.1.1.2","#","_blank");
add_Sub("1.1.1.3","#","_blank");
m_end();
m_start("1.1.2",0);
add_Sub("1.1.2.1","#","_blank");
add_Sub("1.1.2.2","#","_blank");
add_Sub("1.1.2.3","#","_blank");
m_end();
m_start("1.1.3",0);
add_Sub("1.1.3.1","#","_blank");
add_Sub("1.1.3.2","#","_blank");
add_Sub("1.1.3.3","#","_blank");
m_end();
add_Sub("1.1.4","#","_blank");
add_Sub("1.1.5","#","_blank");
add_Sub("1.1.6","#","_blank");
m_end();
m_start("1.2",0);
add_Sub("1.2.1","#","_blank");
add_Sub("1.2.2","#","_blank");
add_Sub("1.2.3","#","_blank");
m_end();
m_start("1.3",0);
add_Sub("1.3.1","#","_blank");
add_Sub("1.3.2","#","_blank");
add_Sub("1.3.3","#","_blank");
m_end();
add_Sub("1.4","#","_blank");
add_Sub("1.5","#","_blank");
m_end();</script>
</table></body></html>
<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 m_start(name,tt) //菜单组开始
{
document.writeln('<tr><td class="bj">'+(tt==1?'1':'0')+'</td>');
document.writeln('<td><a href="#" onclick="zgmm()">'+name+'</a></td>');
document.writeln('</tr>');
document.writeln('<tr style="display: '+(tt==1?'block':'none')+';">');
document.writeln('<td class="bj"> </td>');
document.writeln('<td>');
document.writeln('<table border="0" cellpadding="0" cellspacing="0">');
}function m_end() //菜单组结束
{
document.writeln('</table></td></tr>');
}function add_Sub(name,url,kj) //添加菜单项
{
document.writeln('<tr><td class="bj">2</td><td>');
document.writeln('<a target="'+kj+'" href="'+url+'">'+name+'</a>');
document.writeln('</td></tr>');
}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><table border="0" cellpadding="0" cellspacing="0" width="100%" id="A1">
<script language="JavaScript">
// 说明:
// 菜单组开始,m_start(name,tt); name为菜单组名称,tt为1菜单组初始时展开,为0不展开
// 菜单组结束:m_end();
// 添加菜单项:add_Sub("菜单项名称","url地址","框架名");
m_start("time",0);
m_start("1.1",0);
m_start("1.1.1",0);
add_Sub("1.1.1.1","http://www.17173.com/","_blank");
add_Sub("1.1.1.2","#","_blank");
add_Sub("1.1.1.3","#","_blank");
m_end();
m_start("1.1.2",0);
add_Sub("1.1.2.1","#","_blank");
add_Sub("1.1.2.2","#","_blank");
add_Sub("1.1.2.3","#","_blank");
m_end();
m_start("1.1.3",0);
add_Sub("1.1.3.1","#","_blank");
add_Sub("1.1.3.2","#","_blank");
add_Sub("1.1.3.3","#","_blank");
m_end();
add_Sub("1.1.4","#","_blank");
add_Sub("1.1.5","#","_blank");
add_Sub("1.1.6","#","_blank");
m_end();
m_start("1.2",0);
add_Sub("1.2.1","#","_blank");
add_Sub("1.2.2","#","_blank");
add_Sub("1.2.3","#","_blank");
m_end();
m_start("1.3",0);
add_Sub("1.3.1","#","_blank");
add_Sub("1.3.2","#","_blank");
add_Sub("1.3.3","#","_blank");
m_end();
add_Sub("1.4","#","_blank");
add_Sub("1.5","#","_blank");
m_end();</script>
</table></body></html>
mo.style.display = (mo.style.display=="none")?"block":"none";//根据mo的显示状态,设置ero的innerHTML的值
ero.innerHTML = (mo.style.display=="none")?"0":"1";
inerHTML是html标签的属性,成对出现的标签大多数都有这个属性
是开始标签和结束标签之间的字符,不包括标签本身
比如<p id="pp">aaaaaaaaaa<span id="ss">bbbbbbbb</span> </p>这里的p标签和span标签嵌套在一起
那么pp.innerHTML的内容就是
aaaaaaaaaa<span id="ss">bbbbbbbb</span>ss.innerHTML的内容就是bbbbbbbb