0

在以下函数中,我只按预期获取父对象而不是它们的子对象(或孙子对象):

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));,而不是父母。

我怎样才能得到父母和孩子?

4

1 回答 1

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 树中,那么您应该能够将树结构加载到正确配置的存储中,并且让您的树神奇地工作。如果您向我们展示您的数据结构,您可能会得到一些帮助。

于 2013-07-24T16:39:33.833 回答