首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

treepanel遍历子节点有关问题

2012-09-28 
treepanel遍历子节点问题findChildNodes : function(node){ var childnodes node.childNodesExt.each(c

treepanel遍历子节点问题
findChildNodes : function(node){
var childnodes = node.childNodes;
Ext.each(childnodes, function (){ //从节点中取出子节点依次遍历
var nd = this;
if(nd.hasChildNodes()){ //判断子节点下是否存在子节点
findChildNodes(nd); //如果存在子节点 递归
}  
});
return nd;
},

onTreePanelClicked : function(root, s) {
var root = this.tree.getRootNode();
var nd = this.findChildNodes(root);
}

我的问题是为什么递归时findChildNodes(nd);这个方法undefined..

[解决办法]
这样不会有函数未定义的错误了吧?
至于功能无法实现那是你自己代码逻辑的问题了

直接上代码吧:
function getNodes(node,NodeArr,isOnlyLeaf)///参数依次为 1-tree节点,2-调用时直接传null,3-传true表示只要叶节点
{
var nodeArr;
if(!NodeArr) nodeArr =new Array();//没有传递第二个参数时初始为新数组
else nodeArr=NodeArr;
if(node.leaf || !isOnlyLeaf) nodeArr.push(node);//如果是叶节点,加入数组
if(!node.childNodes || node.childNodes.length==0) return nodeArr;//没有子节点,返回
for(var i=0;i<=node.childNodes.length-1;i++)
{
getNodes(node.childNodes[i],nodeArr,isOnlyLeaf);//对每一个子节点进行递归调用将其中的叶节点添加到数组
}
return nodeArr;//函数执行完成,返回数组
}

这样调用
var allNodes=getNodes(root,null,false);//获取root节点下所有子节点,root是tree节点对象
var allLeafs=getNodes(root,null,true);//获取root节点下所有叶节点

热点排行