function outputFolderLink(i)
{
if (this.hreference)
{
doc.write("<a style='{cursor:hand;font-size:9pt}' href='" + this.hreference +"'");
if (browserVersion > 0)
{
doc.write("onClick='javascript:clickOnFolder("+this.id+")' ondblclick='javascript:openFolder("+this.id+")'");
}
doc.write(">");
}
else
{
//doc.write("<a>") //removed by XGM
if( i > 0)  //i=1, 表示节点的最终文字
{
doc.write("<a style='{cursor:hand;font-size:9pt}' id= 'leaf"+this.id+"' onClick='javascript:clickOnFolder("+this.id+")' ondblclick='javascript:openFolder("+this.id+")'>"); //modified by xgm
}
else
{
doc.write("<a style='{cursor:hand;font-size:9pt}' onClick='javascript:clickOnFolder("+this.id+")' ondblclick='javascript:openFolder("+this.id+")'>"); //modified by xgm
}
}
}function addChild(childNode)
{
this.children[this.nChildren] = childNode;
this.nChildren++;
childNode.parent = this;
return childNode;
}function folderSubEntries() //计算所有子节点数
{
var i = 0;
var se = this.nChildren; for (i=0; i < this.nChildren; i++)
{
if (this.children[i].children) //is a folder
se = se + this.children[i].subEntries();
} return se;
}
// Methods common to both objects (pseudo-inheritance)
// ********************************************************function display()
{
this.navObj.style.display = "block";
}function createEntryIndex()
{
this.id = nEntries;
indexOfEntries[nEntries] = this;
nEntries++;
}// total height of subEntries open
function totalHeight() //used with browserVersion == 2
{
var h = this.navObj.clip.height
var i = 0 if (this.isOpen) //is a folder and _is_ open
for (i=0 ; i < this.nChildren; i++)
  h = h + this.children[i].totalHeight() return h
}
// Events
// *********************************************************function clickOnFolder(folderId)
{
var clicked = indexOfEntries[folderId] //if (!clicked.isOpen) //removed by xgm
clickOnNode(folderId) return; if (clicked.isSelected)
return
}function openFolder(folderId)
{
var clickedFolder = 0
var state = 0
var s
clickedFolder = indexOfEntries[folderId] if (clickedFolder.nodekind == "folder")
{
state = clickedFolder.isOpen
if ((folderId == 0)&&(state))
{
}
else
{
clickedFolder.setState(!state); //open<->close
}
} //document.cookie="currentNode=" + folderId
}function clickOnNode(folderId)
{
var clickedFolder = 0
var state = 0
var s
clickedFolder = indexOfEntries[folderId] if (clickedFolder.nodekind == "folder")
{
state = clickedFolder.isOpen
if ((folderId == 0)&&(state))
{
}
else
{
if (folderId == 0)
clickedFolder.setState(!state); //open<->close
}
} if (clickedFolder.nodekind=="node")
{
if (clickedFolder != currentNode)
{
if (currentNode.leaf)
{
currentNode.leaf.innerHTML = "<span style='{background-color: transparent;font-size:9pt;color:#000000}'>"+currentNode.leaf.innerText+"</span>"
}
clickedFolder.leaf.innerHTML = "<span style='{background-color: transparent;font-size:9pt;color:#000000}'><b>"+clickedFolder.leaf.innerText+"</b></span>"
currentNode = clickedFolder
}
if (typeof(clickToNavigate)=="function")
{
clickToNavigate(clickedFolder)
}
else
{
alert("没有指定事件:clickToNavigate(node)")
};
}
else
{
if (clickedFolder != currentNode)
{
if (currentNode.leaf)
{
currentNode.leaf.innerHTML = "<span style='{background-color: transparent;font-size:9pt;color:#000000}'>"+currentNode.leaf.innerText+"</span>"
}
clickedFolder.leaf.innerHTML = "<span style='{background-color: transparent;font-size:9pt;font-weight: bold;color:#000000}'>"+clickedFolder.leaf.innerText+"</span>"
currentNode = clickedFolder
}
if (typeof(clickToNavigate)=="function")
{
clickToNavigate(clickedFolder);
}
else
{
alert("没有指定事件:clickToNavigate(node)")
}
}
if (clickedFolder.values[3] != exitValue)
document.cookie="currentNode=" + folderId;
else
document.cookie="currentNode=2";
}function clickOnNodeEx(folderId)  //此函数用来展开树,不触发点击事件
{
var clickedFolder = 0
var state = 0
var s
//alert(folderId)
clickedFolder = indexOfEntries[folderId]
if (clickedFolder.nodekind == "folder")
{
state = clickedFolder.isOpen
clickedFolder.setState(!state) //open<->close
}
if (clickedFolder.nodekind=="node")
{
if (clickedFolder != currentNode)
{
if (currentNode.leaf)
{
currentNode.leaf.innerHTML = "<span style='{background-color: transparent;font-size:9pt;color:#000000}'>"+currentNode.leaf.innerText+"</span>"
}
clickedFolder.leaf.innerHTML = "<span style='{background-color: transparent;font-size:9pt;color:#000000}'><b>"+clickedFolder.leaf.innerText+"<b></span>"
currentNode = clickedFolder
}
}
else
{
if (clickedFolder != currentNode)
{
if (currentNode.leaf)
{
currentNode.leaf.innerHTML = "<span style='{background-color: transparent;font-size:9pt;color:#000000}'>"+currentNode.leaf.innerText+"</span>"
}
clickedFolder.leaf.innerHTML = "<span style='{background-color: transparent;font-size:9pt;color:#000000}'><b>"+clickedFolder.leaf.innerText+"<b></span>"

currentNode = clickedFolder
}
}
if (clickedFolder.values[3] != exitValue)
document.cookie="currentNode=" + folderId;
else
document.cookie="currentNode=2";
//document.cookie="currentNode=" + folderId
}function clickSubNode(id)
{
folder = indexOfEntries[id];
folderP = folder.parent;
if (! folderP.isOpen)
{
clickOnNode(folderP.id);
}
clickOnNode(id);
}function getLastId()
{
str = document.cookie;
str_arr = str.split(";");
for (i=0;i<str_arr.length;i++)
{
strstr=str_arr[i];
if (strstr.indexOf("currentNode=")!=-1)
break;
}
if (i==str_arr.length)
return 0;
cn = strstr.split("=")[1];

if (cn == "" || cn == "undefined" || cn == "0")
{
cn = 2;
}

return cn;
}function initializeDocument()
{
if (doc.all)
browserVersion = 1; //IE4
else
{
if (doc.layers)
browserVersion = 2; //NS4
else
browserVersion = 0; //other
 } foldersTree.initialize(0, 1, "");
foldersTree.display(); if (browserVersion > 0)
{
doc.write("<layer top="+indexOfEntries[nEntries-1].navObj.top+">&nbsp;</layer>");
lastId = getLastId();

if (lastId == 0)
lastId = 2;
//if (lastId == 0)
//{
// clickOnNodeEx(0);
// clickOnNode(0);
// open the root folder
//}
//else
{
if (lastId >= nEntries)
{
lastId = nEntries-1;
}
clickOnNodeEx(0);
clickOnNodeEx(0);
folder = indexOfEntries[lastId].parent;
while (folder.id != 0)
{
clickOnNodeEx(folder.id);
folder = folder.parent;
}
clickOnNode(lastId);
}
}
}// Auxiliary Functions for Folder-Treee backward compatibility
// *********************************************************function gFld(description, hreference)
{
folder = new Folder(description, hreference);
return folder;
}// Global variables
// ****************USETEXTLINKS = 1
indexOfEntries = new Array
nEntries = 0
doc = document
browserVersion = 0
selectedFolder=0
currentNode=0
exitValue = 9

解决方案 »

  1.   

    ----------------------------------html file------------------------------<html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <script language="javascript" src="./Tree/function.js"></script>
    <style>
    a{
    color: #000000; 
    text-decoration: none;
    font-size:10.5pt;
    }
    a:active{
    cursor:hand;
    color: #000000;
    top: 1px;
    text-decoration: underline; 
    font-size:11pt;
    }
    </style>
    <title>邮件左树</title>
    <base target="main">
    </head>
    <body topmargin="30" leftmargin="0" bgcolor="#FFDA50">
    <script language=javascript>
    //TreeValueStr format:
    //level;description;nodeflag;ImgSrc;nodeid;URL....
    var TreeValueStr = "**;功能列表;0;./images/left_gnlb.gif;./images/left_gnlb.gif;-1;|"
    + "****;邮箱状态;1;./images/left_yxzk.gif;./images/left_yxzk.gif;1;resourcestatus.php|"
    + "****;收邮件;1;./images/left_sjx.gif;./images/left_sjx.gif;2;receive.php|"
    + "****;发邮件;1;./images/left_fjx.gif;./images/left_fjx.gif;3;sendmail_pre.php|"
    + "****;文件夹;0;./images/left_owjj.gif;./images/left_wjj.gif;4;listmailbox.php|"
    + "******;收件箱;1;./images/left_sjx.gif;./images/left_sjx.gif;41;listmail.php|"
    + "******;发件箱;1;./images/left_fjx.gif;./images/left_fjx.gif;42;listmail2.php?folder=INBOX.Sent|"
    + "******;草稿箱;1;./images/left_cgx.gif;./images/left_cgx.gif;43;listmail2.php?folder=INBOX.Draft|"
    + "******;垃圾箱;1;./images/left_ljx.gif;./images/left_ljx.gif;44;listmail.php?folder=INBOX.Trash";
    /*
    显示树型结构
    入口:
    TreeValueStr :按顺序排列的层次关系字符串
    NSTEP :层次字符位数
    */
    function ShowTree(TreeValueStr,NSTEP){
    TreeNodes=TreeValueStr.split("|");
    topnode=TreeNodes[0].split(";");
    foldersTree=gFld("<b>"+topnode[1]+"</b>");
    foldersTree.parent=foldersTree;
    foldersTree.values[0]=topnode[2];
    foldersTree.values[1]=topnode[3];
    foldersTree.iconSrc = topnode[3];
    foldersTree.iconSrcOpen = topnode[3];
    foldersTree.iconSrcClose = topnode[4];
    foldersTree.values[2] = topnode[6];
    curLevel="";
    curNode=foldersTree;
    for (i=1;i<TreeNodes.length;i++)
    {
    Node = TreeNodes[i].split(";")
    Flevel = Node[0];
    Fdesc = Node[1];
    FType = Node[2];
    openImgSrc = Node[3];
    closeImgSrc = Node[4];
    URLStr = Node[6];
    FID = Node[5];
    n = (curLevel.length -Flevel.length) / NSTEP + 1 ; if (n<0)
    n=0;
    for (j=0;j<n;j++)
    {
    curNode=curNode.parent;
    } if (FType == "0")
    {
    af=new Folder(Fdesc);
    af.values[0]=FType;
    af.values[1]=FID;
    af.values[2] = URLStr;
    af.values[3] = FID;
    af.iconSrcOpen = openImgSrc;
    af.iconSrcClose = closeImgSrc;
    af.iconSrc = closeImgSrc;
    af.nodekind = "folder";
    curNode = curNode.addChild(af);
    }
    else
    {
    ai=new Folder(Fdesc);
    ai.values[0]=FType;
    ai.values[1]=FID;
    ai.values[2] = URLStr;
    ai.values[3] = FID;
    ai.iconSrcOpen = openImgSrc;
    ai.iconSrcClose = closeImgSrc;
    ai.iconSrc = closeImgSrc;
    ai.nodekind = "node";
    curNode = curNode.addChild(ai);
    }
    curLevel=Flevel;
    }
    }//TreeValueStr格式:
    //FLevel;FName;Fprsn_type;ImgSrc;NodeId...|if (TreeValueStr != "")
    {
    ShowTree(TreeValueStr,2);
    initializeDocument();
    }
    else
    {
    document.write("<font color=red>!!!</font>")
    }function clickToNavigate(node)
    {
    if (node.values[1]==-1)
    return;
    /*
    if (node.values[3] == exitValue)
    {
    window.parent.close();
    return;
    }
    */

    URL = node.values[2];

    if (URL != "" && URL != "undefined")
    {
    window.parent.main.location.href = URL;
    }
    //window.open(URL);
    }</script>
    </body></html>
      

  2.   

    function getLastId()
    {
    str = document.cookie;
    str_arr = str.split(";");
    for (i=0;i<str_arr.length;i++)
    {
    strstr=str_arr[i];
    if (strstr.indexOf("currentNode=")!=-1)
    break;
    }
    if (i==str_arr.length)
    return 0;
    cn = strstr.split("=")[1];

    if (cn == "" || cn == "undefined" || cn == "0")
    {
    cn = 2;
    }

    return -1;
    }