构建表示树的JavaScript对象

时间:2011-07-18 18:05:41

标签: javascript

function createObjects(element, depth){
    element.label = element.getElementsByTagName("label")[0].firstChild.nodeValue;
    element.url = element.getElementsByTagName("url")[0].firstChild.nodeValue;
    element.depth = depth;
    if(treeWidths[depth] == undefined){
            treeWidths[depth] = 1;
    } else {
            treeWidths[depth]++;
    }

    element.children = new Array();
    allNodes.push(element);

    var children = element.getElementsByTagName("children")[0].childNodes;
    for(var i=0; i<children.length; i++){
            if(children[i].nodeType != 3 && children[i].tagName == "node"){
                    element.children.push(createObjects(children[i], depth+1));
            }
    }

    element.expanded = false;
    element.visible = false;
    element.moved = false;
    element.x = 0;
    element.y = 0;

    if (getNodeWidth() < element.label.length * 10)
            element.width = element.label.length * 10;
    else
            element.width = getNodeWidth();
    element.height = getNodeHeight();
    return element; }

遇到Firefox问题时,它说'element.children.push'不是一个功能,但只适用于Google Chrome ...

有任何线索吗?

1 个答案:

答案 0 :(得分:1)

element.children = new Array();

我不会添加数组作为元素的属性。如果要将子项添加到元素,这不是正确的方法。此外,如果您只想使用数组来管理数据,这也不是正确的方法。

如果要添加子元素,请使用:

element.appendChild(createObjects(children[i], depth + 1));