第一步:把如下代码加入<head>区域中<script language="JavaScript1.2">
scores = new Array(20);
var numTotal=0;
NS4 = (document.layers) ? 1 : 0;
IE4 = (document.all) ? 1 : 0;
ver4 = (NS4 || IE4) ? 1 : 0;
if (ver4) {
with (document) {
write("<STYLE TYPE='text/css'>");  
        if (NS4) {
       write(".parent {position:absolute; visibility:visible}");
           write(".child {position:absolute; visibility:visible}");
           write(".regular {position:absolute; visibility:visible}")
        }
        else {
       write(".child {display:none}")   
    }        
        write("</STYLE>"); 
    }
}
function getIndex(el) {   
ind = null;   
for (i=0; i<document.layers.length; i++) { 
whichEl = document.layers[i];
if (whichEl.id == el) {      
ind = i;    
break;      
}   
}   
return ind;
}
function arrange() { 
nextY = document.layers[firstInd].pageY +document.layers[firstInd].document.height;  
for (i=firstInd+1; i<document.layers.length; i++) { 
whichEl = document.layers[i];   
if (whichEl.visibility != "hide") {   
whichEl.pageY = nextY;        
nextY += whichEl.document.height;   
}  
}
}
function initIt(){ 
if (!ver4) return; 
if (NS4) { 
        for (i=0; i<document.layers.length; i++) {   
whichEl = document.layers[i];     
if (whichEl.id.indexOf("Child") != -1) whichEl.visibility = "hide";     
}      
arrange();
}    
else {    
divColl = document.all.tags("DIV");       
for (i=0; i<divColl.length; i++) {     
whichEl = divColl(i);      
if (whichEl.className == "child") whichEl.style.display = "none";    
}    
}
}
function expandIt(el) {
   if (!ver4) return;   
   if (IE4) {      
whichEl1 = eval(el + "Child");
for(i=1;i<=numTotal;i++){
whichEl = eval(scores[i] + "Child");
if(whichEl!=whichEl1) {
whichEl.style.display = "none";
}
}      
whichEl1 = eval(el + "Child");   
if (whichEl1.style.display == "none") {     
whichEl1.style.display = "block";    
}   
else {       
whichEl1.style.display = "none";    
}  
}    
else {     
whichEl = eval("document." + el + "Child");
for(i=1;i<=numTotal;i++){
whichEl = eval("document." + scores[i] + "Child");
if(whichEl!=whichEl1) {
whichEl.visibility = "hide";
}
}     
if (whichEl.visibility == "hide") {     
whichEl.visibility = "show";    
}     
else {     
whichEl.visibility = "hide";   
}      
arrange();  
}
}
onload = initIt;
</script>

解决方案 »

  1.   

    第二步:把如下代码加入<body>区域中
    <div id='KB1Parent' class='parent'><a href="#" onClick="expandIt('KB1'); return false">
    +Parent1</a></div>
    <div id='KB1Child' class='parent'>
    Child1</a><br></div>
    <div id='KB2Parent' class='parent'><a href="#" onClick="expandIt('KB2'); return false">
    +Parent2</a></div>
    <div id='KB2Child' class='child'>
    Child2</a><br></div>
    <div id='KB3Parent' class='parent'><a href="#" onClick="expandIt('KB3'); return false">
    +Parent3</a></div>
    <div id='KB3Child' class='child'>
    Child13</a><br></div>
      <SCRIPT>
      numTotal=4;
      scores[1]='KB1';
      scores[2]='KB1';
      scores[3]='KB2';
      scores[4]='KB3';
      </SCRIPT>
      

  2.   

    上面是我随意写的几个父类,和子类,想加多少可以加多少,只不过要把numTotal和scores做稍加改动,试试看,行不?
      

  3.   

    你的解答好像不适合我的动态树型结构的生成:根据对一个不确定的xml文件的节点的查询,可能会是不确定多层结构的生成.
    id就不能预先确定了?id是常量,请问能不能动态确定??这是我头疼的问题.
    可能一种情况为下!
    -
    1-- -
        1--- -
             1-------x
             1-------x 
        1----X
    +
    -
    1-- -
        1--- -
             1-------x
             1-------x 
        1----X