I have a folder/file tree that is dynamically generated from an xml
file. The way I've written it seems to work. Since I'm a fairly novice
javascript programmer, I'm concerned that there may be a hidden
downside to coding this way vs. hiding/showing using style.visibility.
My tree starts with only the top level folders showing. When the xml
for the tree loads, I have a recursive function that creates subtrees
for each folder, then saves them as a property of that folder.
buildTree: function( root, offset )
{
var curNode = root;
var myIndent = 20;
var myHeight = 22;
if( offset == null )
{
myIndent = 2;
}
else
{
myIndent += offset;
}
var spacer = "";
for( var i = 0; i < myIndent;i++ )
{
spacer += "-";
}
var elem = document.createElement( "div" );
elem.style.top = 0;
if( curNode.nodeName == "folder" )
{
elem.id = "FolderElement";
var children = curNode.childNodes;
var subTreeItems = new Array( );
for( var i = 0; i < children.length; i++ )
{
if( children[i].nodeType == "1" )
{
var newChild = this.buildTree( children[i], myIndent );
subTreeItems.push( newChild );
}
}
var folderName = curNode.attributes[0].nodeValue;
var isEmpty = subTreeItems.length > 0 ? false : true ;
var line = this.makeFolderLine(folderName , myHeight, myIndent,
isEmpty );
elem.appendChild( line );
Event.observe( line, "mouseup", this.__neh_toggleFolder_closure,
false);
elem["subTreeData"]= subTreeItems;
}
else if( curNode.nodeName == "item" )
{
elem.id = "ItemElement";
elem.className = "item";
var itemObj = new this.ItemObject( curNode );
var line = this.makeItemLine( itemObj, myHeight, myIndent );
elem.appendChild( line );
Event.observe( line, "mousedown", this.__neh_selectItemDown_closure,
false);
}
return elem;
},
When the user opens a folder, the subtree elements are appended.
Are there any dangers/concerns using this method?
(Warning for the anti-library folks -- I am using the library
prototype.js to add and remove event listeners)
Thanks,
Cathy