WEB开发网
开发学院网页设计JavaScript DTree中致命的递归 阅读

DTree中致命的递归

 2010-09-14 13:43:23 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 前不久我发表过一篇文章,名字叫《可爱又可恨的梅花雪 》,DTree中致命的递归,其中介绍了meizz大侠赫赫有名的梅花雪树控件,而且对其中遇到的一些小问题进行了改造, 1. DTree中图片的引用路径被写死在js代码里,这个完全可以写成一个变量,后来有人评论说梅花雪树太复杂,不如DTr

本文示例源代码或素材下载

前不久我发表过一篇文章,名字叫《可爱又可恨的梅花雪 》,其中介绍了meizz大侠赫赫有名的梅花雪树控件,而且对其中遇到的一些小问题进行了改造,后来有人评论说梅花雪树太复杂,不如DTree来得简便,这个确实如此!DTree的代码看起来要简便很多,所实现的功能也还很丰富(尽管还没有梅花雪树那么强大),在一般的菜单和导航控制中使用会很方便,而且不会有什么问题。我在改造梅花雪树之前,也曾尝试过DTree,并且也对其中的一些方法进行了改造,但后来不得不放弃,因为DTree中致命的递归导致了在大数据量构造树的节点时js报堆栈溢出的错误!

先看看我对DTree的改造。

1. DTree中图片的引用路径被写死在js代码里,这个完全可以写成一个变量,在需要时更改。

var imgPath = "img";
// Tree object
function dTree(objName) {
    this.config = { target: null, folderLinks: true, useSelection: true, useCookies: true, useLines: true, useIcons: true, useStatusText: false, closeSameLevel: false, inOrder: false };
    this.icon = { root: imgPath + "/base.gif", folder: imgPath + "/folder.gif", folderOpen: imgPath + "/folderopen.gif", node: imgPath + "/page.gif", empty: imgPath + "/empty.gif", line: imgPath + "/line.gif", join: imgPath + "/join.gif", joinBottom: imgPath + "/joinbottom.gif", plus: imgPath + "/plus.gif", plusBottom: imgPath + "/plusbottom.gif", minus: imgPath + "/minus.gif", minusBottom: imgPath + "/minusbottom.gif", nlPlus: imgPath + "/nolines_plus.gif", nlMinus: imgPath + "/tree/nolines_minus.gif" };
    this.obj = objName;
    this.aNodes = [];
    this.aIndent = [];
    this.root = new Node(-1);
    this.selectedNode = null;
    this.selectedFound = false;
    this.completed = false;
}

1 2 3 4 5  下一页

Tags:DTree 致命 递归

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接