2016-09-02 24 views
-2

我有5個現有的div元素和數組data的5個值。 當前d in d3 each返回undefineddata[i]返回它的值。d3:如何手動將數據鏈接到元素

d3.selectAll("div")     
       .each(function(d,i){         
        console.log(d, i, data[i]); 
} 

如何關聯divdata[i]使d將返回data[i]值,而不使用D3 enter()

+0

如果沒有綁定數據,將'd'傳遞給你的每個函數都不會產生任何結果。 – ksav

+0

...''我應該仍然是'selectAll('div')。each()'的索引,所以你可以使用這個值來訪問'data'數組。但是,這些都沒有限制。所以如果你的數據數組發生變化,它可能不再符合你的div數組。 – ksav

+0

你的解決方案正在工作,但我想學習的界限。 – beewest

回答

0

解決方案是here。將id添加到每個div,然後通過idkey使用加入到data

data = [ 
      {"key":"0","val":"10"}, 
      {"key":"1","val":"5"}, 
      {"key":"2","val":"8"} 
     ];  
... 
d3.selectAll("div.h-bar") 
       .data(data, function(d:any){ 
        var x = d? d.key : this.id; 
        return x; 
       })     
       .each(function(d:any,i:any){   
        console.log(d, i, data[i]); 
} 
0

我們可以使用datum(newvalue)newvalue分配給每個元素的模型。

data        
       .forEach(function(d:any){   
        var item = d3.select('#div'+d.key).datum(d); 
       }); 
相關問題