首页 > web前端 > js教程 > 为什么在 D3.js 中使用 selectAll(null) 来追加元素?

为什么在 D3.js 中使用 selectAll(null) 来追加元素?

Mary-Kate Olsen
发布: 2024-11-04 05:17:29
原创
494 人浏览过

Why Use `selectAll(null)` in D3.js for Appending Elements?

选择 null:为什么在 D3 中使用 selectAll(null)?

背景

在 D3 中,经常会看到这样的模式:

var circles = svg.selectAll(null)
    .data(data)
    .enter()
    .append("circle");
登录后复制

这段代码将元素附加到 DOM,但是为什么使用 selectAll(null) 呢?对于特定元素不应该是 selectAll("circle") 或 selectAll("p") 吗?

回车选择

D3.js 中“回车”选择的说明:

将数据绑定到元素时,存在三种情况:

  1. 元素和数据点数量相等。
  2. 元素数量多于数据点。
  3. 数据点多于元素。

在场景 #3 中,没有对应元素的数据点属于“输入”选择。在“输入”选择中使用追加会为不匹配的数据创建新元素。

绑定到现有元素

建议的代码片段 var Circles = svg.selectAll("circle").data(data ) 选择数据并将其绑定到现有圈子。随后的 Enter() 调用处理没有匹配元素的数据点。

使用 selectAll(null)

虽然在不存在圆圈时使用 selectAll("circle") 可以工作,但使用 selectAll(null) 可以提供一致保证“输入”选择始终对应于数据数组中的元素。这种方法确保为所有不匹配的数据点附加新元素。

结论

下面的示例演示了如何使用 selectAll(null) 将段落附加到正文:

var body = d3.select("body");
var data = ["red", "blue", "green"];
var p = body.selectAll(null)
  .data(data)
  .enter()
  .append("p")
  .text(d => "I am a " + d + " paragraph!")
  .style("color", String)
登录后复制

以上是为什么在 D3.js 中使用 selectAll(null) 来追加元素?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板