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

DTree中致命的递归

 2010-09-14 13:43:23 来源:WEB开发网   
核心提示: 说明一下,我增加了一个treeMode变量来进行判断,DTree中致命的递归(3),当值为General时,在树中check节点时其子节点均被check;当值为Special时,但如果事先不知道树的层级,就需要使用递归,在树中check节点时其子节点均被check而且被disabled,

说明一下,我增加了一个treeMode变量来进行判断,当值为General时,在树中check节点时其子节点均被check;当值为Special时,在树中check节点时其子节点均被check而且被disabled。enableChildreNode方法用来disabled所有的子节点并且被check。同时,checkChildreNode方法中需要判断子节点的disabled状态,被disabled的子节点其check状态不能被改变。

4. 修改了DTree中node方法里Render节点时的事件注册代码。

旧的代码是:

str += "<input  name='" + this.obj + "' id='c" + this.obj + node.id + "'onclick='" + this.obj + ".checkNode(" + node.id + ")' type='checkbox' " + (node.check === "true" ? "checked='checked'" : "") + " />";

改造后的代码是:

str += "<input id='c" + this.obj + node.id + "' onclick='javascript: " + this.obj + ".checkNode("" + node.id + "")' type='checkbox' " + (node.check === "true" ? "checked='checked'" : "") + " />";

以上是我在使用DTree时根据需要对DTree的部分改造。下面说说我所遇到的问题。

首先,DTree的构造直接采用了dTree.add()方法,也就是说需要在一个循环或递归中去add所有的节点,如果事先知道树的层级,我们用n次循环可以解决问题,但如果事先不知道树的层级,就需要使用递归,在js中如果递归过深会引发堆栈溢出的错误。

上一页  1 2 3 4 5  下一页

Tags:DTree 致命 递归

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