あなたの目標は、「 「enter」選択は常にデータ配列内の要素を表し、データ要素ごとに 1 つの要素が含まれます。
データ ポイントの数が要素の数を超えると、追加のデータ ポイントが「入力」選択に追加されます。 D3 は、追加関数が適用されるときに、「入力」選択内のデータ ポイントの新しい要素を作成します。
.data(data) .enter() .append("circle");
var Circles = svg.selectAll("circle")<p></p> <p>
このスニペットはデータをバインドしますすべての円を含む選択範囲。その後、enter() メソッドは、選択した要素に一致しないデータ ポイントの円を作成します。
このアプローチは、既存の円や特定のクラスの要素が存在しない場合に機能する可能性がありますが、そのようなものが存在しないことを前提としています。要素が選択範囲内に存在します。既存のサークルがある場合、selectAll("circle") を使用すると、既存のサークルが選択され、データ バインディングの問題が発生する可能性があります。
selectAll(null) は、既存の DOM 要素に関係なく、「enter」選択が常にデータ配列内のデータに対応するようにすることで機能します。追加される可能性のあるすべての要素を表すプレースホルダーを作成します。
selectAll(null) ですべての要素を選択すると、「入力」選択を既存の要素と潜在的な新しい要素の組み合わせとして考慮するように D3 に指示します。それを作成する必要があります。このアプローチでは、既存の要素がない場合でも、「入力」選択にデータ ポイントごとに 1 つの要素が含まれることが保証されます。
以上が「enter」選択がすべてのデータ要素を表すことを保証するために、D3.js で selectAll(null) が使用されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。