构建表示树的JavaScript对象

Building JavaScript objects representing a tree

本文关键字:JavaScript 对象 表示 构建      更新时间:2023-09-26
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."推'不是一个功能,但工作(仅)在谷歌Chrome…

什么线索吗?

element.children = new Array();

我不会添加数组作为元素的属性。如果要向元素添加子元素,这不是正确的方法。如果你只是想用数组来管理数据,这也不是正确的方法。

如果你想添加子元素,使用:

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