2017-09-25 169 views
0

因此,我正在處理我的d3 visual中的一個問題,在該問題中,我嘗試創建具有可點擊鏈接的節點。我只是在學習D3,所以我在創建這些鏈接時遇到了麻煩。現在到目前爲止,我已經獲得了所有節點上的鏈接,但是我希望實現的目的是爲每個節點提供不同的鏈接。目前,我只是爲每個節點添加一個url,但是我將如何選擇一個單獨的節點並附加一個鏈接。我想這樣做,當用戶點擊對象節點時,它會轉到另一個頁面。添加鏈接到D3中的節點

var onode = svg.append('g').selectAll(".outer_node") 
     .data(data.outer) 
     .enter().append("g") 
     .attr("class", "outer_node") 
     .on("mouseover", mouseover) 
     .on("mouseout", mouseout) 
     .on("click", click); 

function click (d){ 
    window.open("https://www.google.com", "_self"); 
    } 

這使得每個節點都有相同的確切鏈接,我不知道如何分配不同的鏈接。有人可以幫忙嗎?

+0

我相信,通過在函數中傳遞d點擊,我有效地在組中的當前節點?這是真的?如果是這樣,那麼我將如何根據數組中的位置來分配鏈接。對不起,只是很困惑如何做到這一點。 – fatalwanderer

回答

1

假設你已經存儲在數據集中的網址時,你可以在你的函數訪問網址:

function click (d){ 
    let url = "http://" + d.url; //or whatever your URL field is called in the data 
    window.open(url, "_self"); 
} 

你提到的「數組中的位置」,因此,如果URL是在單獨的數組,但與數據集對齊,那麼你可以使用

function click (d, i){ //is this 0 based index of each item in the selection 
    let url = urlData[i] 
    window.open(url, "_self"); 
}