需求:EXTJS定义的一个树,后台返回JSON中的结点带有disable属性(非叶子结点也有可能)。要求能移除disabled的节点。

方案:

   function getDisabledNode(tree,node){
    var p = null
    if(null !=(p= node.firstChild)){
      getDisabledNode(tree,p)
     }else{
      if(node.disabled){
       p = node.parentNode
       p.removeChild(node)
       getDisabledNode(tree,p)
       }
      if(node == tree.getRootNode()){
       return true
       }
      }
    try{
      getDisabledNode(tree,node.nextSibling)
    }catch(e){}
 }

 

EXT中定义tree 并增加一个按钮执行: getDisabledNode(tree,tree.getRootNode().firstChild)

函数运行前后对比。由于Enery foods 下有一个结点可用故而不能移除。程序虽然满足了需求,但总感觉好像有问题。不知道谁帮我看看。