日期:2014-05-16  浏览次数:20368 次

ext获取treePanel的所有叶节点用什么方法,api上没有
如题

------解决方案--------------------
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 allLeafArr=getNodes(root,null,true);//root是tree根节点