DTree中致命的递归
2010-09-14 13:43:23 来源:WEB开发网说明一下,我增加了一个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中如果递归过深会引发堆栈溢出的错误。
更多精彩
赞助商链接