2010-10-20 28 views
0

我正在使用Ext JS庫創建我的應用程序。我有一個樹面板,有樹節點和子樹節點。這些樹節點具有我希望能夠訪問的葉子。我一直在尋找了一段時間,但無法找到的屬性的函數來訪問葉子:(在Ext JS樹中訪問TreeNode的葉子

一些代碼是在這裏:

var i; 
var j = 0; 
var selectedLayers = new Array(); 
           while(layerRoot.lastChild.hasChildNodes()){ 
            alert(layerRoot.lastChild.firstChild); 
for(i = 0; i < layerRoot.lastChild.firstChild.childNodes.length; i++){ 
             if(layerRoot.lastChild.firstChild.childNodes[i].isSelected()){ 
              selectedLayers[j] = layerRoot.lastChild.firstChild.childNodes[i].attributes.text; 
              alert(selectedLayers[j]); 
j++; 
} 
} 

            layerRoot.lastChild.removeChild(layerRoot.lastChild.firstChild); 
} 
layerRoot.removeChild(layerRoot.lastChild); 

我試過layerRoot.lastChild.firstChild.childNodes,但是,這並不工作,因爲layerRoot.lastChild.firstChild的孩子葉子:(。你的時間和反饋是非常讚賞。

elshae

回答

1

我剛開始TreePanel中玩弄過,我覺得你有編寫你的函數來遍歷樹和使用leaf屬性測試節點是否離開。如果您想要在樹葉上執行特定的功能,可以使用cascade()自動遍歷樹,沿途測試leaf屬性並執行代碼。

+0

我厭倦了使用級聯函數,它不是我想要的,或者我可能只是不明白它。這是我做的:while(layerRoot.lastChild.hasChildNodes())layerRoot.lastChild.firstChild.cascade(function(){if(this.ui.isChecked()){ alert(this.attributes .text +「is checked」); //} });問題是,this.attributes.text返回父節點,this.attributes.geoserver.text返回null – elshae 2010-10-20 18:57:50

+0

我忘了補充說,你傳遞給'cascade'的函數的返回值決定了它是否一直沿樹遍歷。 – 2010-10-20 19:14:08

+0

:)謝謝!現在肯定會通過每一片葉子,但是有一件事: -/ {alert(node.attributes.text +「checked」); } 返回undefined,這是爲什麼? – elshae 2010-10-20 19:37:49