2013-07-10 75 views
2

我正在使用強制有向圖將圓圈附加到每個節點。D3.js:對於特定的FDG節點,將一個屬性的值傳遞給另一個屬性?

作爲節點創建的一部分,我首先將每個節點圓的半徑「r」設置爲默認和一致的值(defaultNodeSize = 10)。這成功繪製了一個集羣,其中所有相關節點的大小相同。另外,在創建時,我設置了一個名爲「rSize」的屬性,它指定了節點的絕對量值。每個節點具有不同的rSize,rSize與defaultNodeSize不同。 rSize的目的是讓我可以稍後訪問它,並根據控制器動態地將圓的半徑從其defaultNodeSize更改爲它的rSize(或相反),以允許每個節點展開或收縮。

在一個單獨的控制器函數中,我稍後選擇要將新的rSize應用於的所有節點。選擇它們是容易...

var selectedNodeCircles = d3.selectAll("#NODE"); 

不過,我不知道語法是閱讀每個節點的RSIZE和應用RSIZE向被被改變了特定節點的內容。我認爲這是類似...

selectedNodeCircles.("r", function(){ return this.attr("rSize"); }); 

在其他單詞的,我想找回那個特定節點的「RSIZE」屬性值,並設置屬性「R」,從「RSIZE」檢索的值。

想知道正確的語法是做什麼的嗎?

感謝您提供的任何幫助!

回答

1

您在尋找getAttribute()的功能。

所以這樣的事情應該爲你工作:

selectedNodeCircles.attr("r", function() {return this.getAttribute("rSize")})

記住this的功能,是圓本身,因此簡單的元素在DOM,盡我的理解。

您可以通過在result聲明之前使用console.log(this)直接打印出來進行確認。

希望這會有所幫助。

+1

This works。謝謝。我還了解到另一種選擇是確保rSize是綁定到每個節點的原始數據集的一部分。那麼它也可能是更多的數據驅動方法,例如「selectedNodeCircles.attr(」r「,function(d){return d.rSize;});」 –

+0

太棒了!我很高興它解決了:) – vijay

相關問題