function initShowHideDivs(inputId) 

    Guid = inputId; 
var divs = document.getElementsByTagName('DIV'); 
var divCounter = 1; 
var divcountlength = divs.length; for(var no = 0; no  < divcountlength; no++) 

if(divs[no].className == 'TitleHeader' + Guid) 
     { 
             
divs[no].onclick = showHideContent; 
divs[no].onmouseover = changeTitleHeaderColourOnmouseover; 
divs[no].onmouseout = changeTitleHeaderColourOnmouseout; 
divs[no].id = 'TitleHeader_q'+ divCounter + Guid;  var answer = divs[no].nextSibling; 

//if(answer.hasChildNodes())

while(answer && answer.tagName!='DIV') 
        { 
answer = answer.nextSibling; 

answer.id = 'TitleHeader_a'+ divCounter + Guid ; 
contentDiv = answer.getElementsByTagName('DIV')[0]; 
contentDiv.style.top = 0 - contentDiv.offsetHeight + 'px';  
contentDiv.className='SubTitle_content'; 
contentDiv.id = 'TitleHeader_ac'+ divCounter + Guid ; 
answer.style.display='none'; 
answer.style.height='1px'; 
divCounter++; 
divs[no].className = 'TitleHeader';
这里思路是不是有点乱,看上去楼主是想用递归吧?目的就是想动态创建一个多级下拉的菜单了,和TREEVIEW思想一样


} else if (divs[no].className == 'TitleHeaderWithoutSubTitle' + Guid)        { 
     
    divs[no].onmouseover = changeWithoutSubTitleColourOnmouseover; 
divs[no].onmouseout = changeWithoutSubTitleColourOnmouseout; 
divs[no].id = 'TitleHeader_s'+ Guid; 
divs[no].className = 'TitleHeaderWithoutSubTitle'; 
     
} } 
}
以前写过个简单的TREEVIEW/*
TreeView
*/
function TreeView(){
    this.TreeName = "TreeView";         //TreeView开始结点
    this.TreeTitle = "MyTree";          //TreeView标题
    this.TreeID = "Id"                  //树节点ID
    this.TitleStr = "Title"             //节点标题
    this.ContentStr = "Description";    //节点内容
    this.UrlStr = "Url";                //节点超链接
    this.RequestUrl = null;             //数据路径
    this.DemoID = null;                 //TreeView容器名
    this.DataSource = null;             //数据源
    this.XmlText = "";                  //数据内容
    this.NodeID = "";                   //节点ID
    this.HeaderStr = "<h2>{$TreeTitle}</h2><ul class='opened'>";
    this.ElementBeginStr = "<li><img id='img{$TreeID}' src='images/closed.gif' style='cursor:pointer;padding:0;margin:0;border:0;background:none;' title='展开' onclick=\"javascript:Tree('{$TreeID}');\" /><a href='javascript:MyBlog();' onclick='javascript:Tree(\"{$TreeID}\");'>{$TitleStr}({$ContentStr})</a></li><ul id='ul{$TreeID}' class='closed'>";
    this.ElementStr =  "<li><img src='images/node.gif' style='padding:0;margin:0;border:0;background:none;'><a href='javascript:MyBlog();' onclick=\"javascript:RssRead('{$UrlStr}');\" title='{$ContentStr}'>{$TitleStr}</a></li>";
    this.ElementEndStr = "</ul>";
    this.FooterStr = "</ul>";
}
TreeView.prototype.DataBind = function(ds)
{
    for(var i=0;i<ds.length;i++)
    {
        if(ds[i].hasChildNodes())
        {
            var Title = ds[i].getAttribute(this.TitleStr);
            var Content = ds[i].getAttribute(this.ContentStr)+"条";
            this.XmlText += this.ElementBeginStr.replace(/\{\$TreeID\}/g,Math.random()).replace(/\{\$TitleStr\}/g,Title).replace(/\{\$ContentStr\}/g,Content);
            this.DataBind(ds[i].childNodes);
            this.XmlText +=  this.ElementEndStr;
        }
        else
        {
            var Content = ds[i].getAttribute(this.ContentStr);
            var Url = ds[i].getAttribute(this.UrlStr);
            var Title = ds[i].getAttribute(this.TitleStr);
            this.XmlText += this.ElementStr.replace(/\{\$UrlStr\}/g,Url).replace(/\{\$ContentStr\}/g,Content).replace(/\{\$TitleStr\}/g,Title);
        }
    }
};
TreeView.prototype.Show = function(){
    $(this.DemoID).innerHTML = this.HeaderStr.replace(/\{\$TreeTitle\}/g,this.TreeTitle) + this.XmlText + this.FooterStr;
};
function Tree(DemoID){
    if($('ul'+DemoID).className == 'opened')
    {
        $('img'+DemoID).src = 'images/closed.gif';
        $('img'+DemoID).title = '展开';
        $('ul'+DemoID).className = 'closed';
    }
    else
    {
        $('img'+DemoID).src = 'images/opened.gif';
        $('img'+DemoID).title = '收缩';
        $('ul'+DemoID).className = 'opened';
    }
}
var TV = new TreeView();
/*
end TreeView
*/

解决方案 »

  1.   

    web_show 说的不错,就是一个动态菜单,但现在不方便大改,想查出问题在那里,为何对无 SubTitle的项,Javascript 不起作用? 
      

  2.   

    你测试下你创建出来的所有菜单是不是你想要的
    function test(e){
    e=e||window.event;
    var tar=e.srcElement||e.target;
    alert(tar.className);
    }
    onmousedown=test;
      

  3.   

    web_show 说的不错,就是一个动态菜单,但现在不方便大改,想查出问题在那里,为何对无 SubTitle的项,Javascript 不起作用? 是因为写的有问题吗? 无论如何,谢谢你的回复。
      

  4.   

    web_show 说的不错,就是一个动态菜单,但现在不方便大改,想查出问题在那里,为何对无 SubTitle的项,Javascript 不起作用? 是因为写的有问题吗? 无论如何,谢谢你的回复。
      

  5.   

    divs[no].onclick = showHideContent; 
    这个方法没贴出来.
    建议将显示subtitle的代码和改变样式的代码分开写,然后单击时不管有没有subtitle先执行改变样式,最后再判断是否有subtitle执行显示的代码。