0

私はこれをHTMLとして持っています:

<div>1</div>
<div>10</div>

私のJS:

divs = d3.select("body").selectAll("div");
alert(divs[0].length);

divs = divs.data([2]);
alert(divs[0].length);

私のjsフィドル:

http://jsfiddle.net/p2v3B/

D3 のドキュメント - https://github.com/mbostock/d3/wiki/Selections#wiki-data - selection.data() は「指定されたデータの配列を現在の選択と結合する」ことを示唆していますが、このテストはそれが何にも参加するのではなく、フラットに置き換えます。

すなわち。2 つの div があり、data() を実行した後は 1 つだけですか?

4

1 に答える 1

2

結合が機能する方法は、指定されたデータを既存の要素に一致させようとすることです。データ項目を 1 つだけ指定すると、多くても 1 つに一致します。あなたの場合、2は最初の既存の要素と一致し (デフォルトでは d3 は配列内のインデックスに基づいて一致するため)、もう一方div.exit()選択の一部です。

意図は、表示されたデータを更新するときにこれを使用することです。以前は 2 つのデータ項目がありましたが、現在は 1 つだけです。何らかの方法で更新されるものと、他のものは削除されるもの。

まだ行っていない場合は、これらの概念をより詳細に説明および図解している3 つの小さな円のチュートリアルを参照することをお勧めします。

于 2013-04-10T05:06:07.933 に答える