这是以前论坛上的一个例子,现在拿出来看,发现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>

解决方案 »

  1.   

    // 如果mo对象在Html中是隐藏的(即:Style.Display=="none"),那么,将其变为可见,反之,进行相反的操作。
    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