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
*/
function test(e){
e=e||window.event;
var tar=e.srcElement||e.target;
alert(tar.className);
}
onmousedown=test;
这个方法没贴出来.
建议将显示subtitle的代码和改变样式的代码分开写,然后单击时不管有没有subtitle先执行改变样式,最后再判断是否有subtitle执行显示的代码。