2014-07-07 27 views
1

上遇到一個錯誤,我試圖做一個圖。即時通訊使用d3來.enter()插入數據。我在.enter()上得到「Uncaught TypeError:undefined不是一個函數」。數據明確地將數據放在#act中。我在我的.enter()d3

d3.select("#act") 
    .datum(Avg(actD)) 
.enter().append("div") 

回答

0

使用D3方法data

d3.select("#act") 
    .selectAll("div") 
    .data(Avg(actD)) 
    .enter().append("div") 

data作品單個和多個數據點。如果使用數據,它不會計算連接,因此您不能使用.enter()方法來附加div。

從文檔:

selection.datum([value])

Gets or sets the bound data for each selected element. Unlike the selection.data method, this method does not compute a join (and thus does not compute enter and exit selections).


實施例;

d3.select("#act") 
    .selectAll("div") // you need to first select an the existing/empty set before you append. 
    .data([0]).enter() 
    .append("div") 
    .html("appended") 
    .style("background-color", "red"); 

Codepen:http://codepen.io/agconti/pen/HtnJz

+0

由於某種原因,當我把.data我沒有添加任何東西。如果我輸入我的控制檯:d3.select(「#act」)。data()我得到[undefined] – user3813223

+0

@ user3813223我會舉一個例子。 – agconti

+0

@ user3813223已更新。 – agconti

1

你並不需要使用.enter().datum(),因爲你沒有執行join

d3.select("#act") 
    .datum(Avg(actD)) 
    .append("div") 

參考請參閱從邁克·博斯托克this SO answerthe docs

+0

我不相信代碼將不首先使用'selectAll(「div」)''工作。 – agconti

+0

@agconti:它的工作原理。爲什麼你需要'selectAll(「div」)'? – mdml

+0

看到這codepen http://codepen.io/agconti/pen/mhDLg。在對它進行操作之前,您必須先選擇空集,對嗎?另外,按照上述OP的註釋,wouldnt'.datum(Avg(actD))'需要是'.datum([Avg(actD)])'。 – agconti

相關問題