在以下函数中,我只按预期获得父对象而不是他们的子(或孙子):
function nest(n)
{
for(var i=0;i<n.attributes.length;i++){
var item = n.attributes[i];
root.appendChild(item.data);
}
}
nest(me);
如果我使用像root.appendChild(nest(item.data));
这样的递归,我会得到孩子和孙子,但不是父母。
我怎样才能让父母和孩子都接受?
答案 0 :(得分:1)
在你的问题中没有明确的解释,你现在拥有什么以及你真正想要什么,我会小心翼翼。
看起来你想要填充一些树结构,但是你只获得了一些顶级节点。这是有道理的,因为你总是调用root.appendChild
,所以事情总是被添加到根节点。
我对您的示例递归调用root.appendChild(nest(item.data))
感到困惑。你的nest
函数没有返回任何内容,因此将它作为参数传递给appendChild
并没有做任何有用的事情。
您应该将您的函数设计为接受当前基本节点(您将向其添加下一级子节点)的参数,以及将由这些节点表示的事物集合。根据您的数据结构,这将是:
function nest(base, items) {
for (var i=0; i<items.length; i++) {
var item = items[i];
var new_child = base.appendChild(item.data);
nest(new_child, item.children);
}
}
如果您有一个格式正确的数据结构要加载到Ext树中,那么您应该只能将树结构加载到正确配置的存储中,并让您的树神奇地工作。如果您向我们展示您的数据结构,您可能会得到一些帮助。