2013-02-12 189 views
0

我是初學者到d3。我讀到,當一個綁定$ n $實體的數據集到一個元素,調用進入,然後執行操作時,這些操作將執行$ n $次。爲什麼只添加3個段落?

然而,在這裏,我的款只追加3倍,即使我的數據集的大小是4: http://jsfiddle.net/johnhoffman/tYr5U/

d3.select("body").data([1, 2, 3, 4]).enter().append("p").text("g"); 

輸出:

g 
g 
g 

爲什麼只有3次?

回答

4

下面是我懷疑要使用的代碼。

d3.select("body").selectAll("p").data([1,2,3,4]).enter().append("p").text("g"); 

連接應該用「p」元素來完成,而不是「body」元素。

至於爲什麼它在你的例子三:

的數據有四個元素,被綁定到單一的「身體」元素。默認情況下,第一個元素1綁定到現有主體(在HTML中定義)。其餘3個元素綁定到不存在的「body」元素。由於只對不存在的元素調用「enter()」,所以在DOM的根目錄上調用append操作三次。

爲了證明這一點,請嘗試:

d3.select("body").data([1,2,3,4]).enter().append("p").text(function(d) {return d;}); 

你會看到,而不是克的數據的數量被追加。

令人困惑,但Circles Tutorial幫助我理解這一點。