2010-05-18 23 views
3

我有一個treeview和一個texbox,允許用戶搜索treeview中的節點。如何給javascript中的treeview節點着色

我已經寫了JS函數來確定樹狀結構中是否存在節點。
我想要的是爲用戶搜索的節點着色。我怎樣才能做到這一點??

+0

問題應refrased說出一個合適的環境。什麼樣的treeview?你需要改變顏色的哪一部分? 我刪除了C#標記,因爲它沒有明確的問題連接。 – 2010-05-18 12:49:07

回答

2

使用CSS並在Javascript中更改className。所以說你的節點是div。當您找到節點,在Javascript中,你會做這樣的事情:

divFoundNode.className = "selected"; 

然後確保你的CSS與背景顏色集合中選擇的類。這將是這個樣子:

.selected {background-color:red;} /* whatever your selected color is here */ 

如果你不想使用CSS,你可以直接通過做這樣的事情改變節點的顏色:

divFoundNode.style.backgroundColor = "red"; 

現在,你」可能還需要關閉先前選擇的其他節點的選擇。要做到這一點,你有兩個選擇。你可以遍歷所有節點並在設置所選節點之前刪除顏色(如上所述),或者你可以在Javascript中用最後一個選定的div存儲一個變量,並將其作爲目標。所以你應該這樣做:

var divLastFoundNode; //global variable 

function treeView_SelectNode(divFoundNode) 
{ 
    divLastFoundNode.className = ""; 
    divFoundNode.className = "selected"; 
    divLastFoundNode = divFoundNode; 
} 

JQuery會讓這個更容易一些。您可以選擇大量節點並一次對所有節點執行操作。比如:

$("div.node").removeClass("selected"); 
$(divFoundNode).addClass("selected"); 
+0

每次執行此操作時,請不要忘記將所有節點重置爲「中性」類名,以便刪除不再適用於後續搜索的舊選擇。 – Robusto 2010-05-18 12:45:39

+0

我剛剛添加,因爲你評論。 :) – sohtimsso1970 2010-05-18 12:48:30

0

很難說沒有一些代碼,但是這個怎麼樣?

document.getElementById("foundnodeid").style.color="#abcdef";

即使我寧願更改類不是直接的顏色,但是這取決於你:

document.getElementById("foundnodeid").style.class="classwithdifferentcolor";