Javascript enter()选择上的extra select()具体做什么?

Javascript enter()选择上的extra select()具体做什么?,javascript,select,d3.js,selectall,Javascript,Select,D3.js,Selectall,输入选择时extra select的具体功能是什么?为什么没有selectAll 现在,我可能会在这里发布更多的文本,以满足您的质量标准,但我非常确定这个问题足够精确,希望不会太愚蠢。我花了几天时间阅读了各种d3教程和文档,但这部分内容仍然没有被我理解。调用.select on an.enter selection与其他选择的操作相同-您可以使用它进一步缩小选择范围。拥有.selectAll并没有真正意义,因为.enter选择指的是实际上还不存在的东西。因此,您只能再次选择整个选择,因为没有明显

输入选择时extra select的具体功能是什么?为什么没有selectAll

现在,我可能会在这里发布更多的文本,以满足您的质量标准,但我非常确定这个问题足够精确,希望不会太愚蠢。我花了几天时间阅读了各种d3教程和文档,但这部分内容仍然没有被我理解。

调用.select on an.enter selection与其他选择的操作相同-您可以使用它进一步缩小选择范围。拥有.selectAll并没有真正意义,因为.enter选择指的是实际上还不存在的东西。因此,您只能再次选择整个选择,因为没有明显的特征。

很少调用;使用或替代更为常见。然而,这三种方法的最终结果是相同的:它指定了如何在enter选择中实例化元素

执行时,将返回三个新选择:

更新选择:与数据相对应的选定元素 退出选择:任何剩余元素没有相应的数据 输入选择:任何剩余数据没有对应的元素 由于enter选择是遗留数据,因此根据定义没有相应的元素。因此,enter选择最初包含占位符节点,您必须将其实例化为适当的元素。您几乎看不到这些节点,因为您会立即告诉D3如何创建缺少的元素,通常是通过调用append或insert。这些方法创建新元素并将它们插入DOM。父节点由上一个节点确定,如本教程中所述

在极少数情况下,您可能希望在实例化输入节点时执行标准append或insert之外的操作。例如,标准的append方法总是创建具有相同名称的元素,例如div或rect。如果要动态指定名称,可以使用select代替并传入函数来创建新元素,如中所述:

事实上,如果你看一下,你会发现它只是select上面的一个包装器。稍微简化的实现是:

d3.selection.prototype.append = function(name) {
  return this.select(function() {
    return this.appendChild(document.createElement(name));
  });
};

这些示例实现被简化,因为它们不处理带名称空间的SVG元素。因此,使用内置方法更容易,这些示例仅用于解释D3如何在内部工作。

我不明白:您可以从实际不存在的东西中选择什么?我是说,我想进入。选择。。。路由到选择父节点,否则就没有意义了?嗯,看起来我有点误解了-我想使用的唯一原因是。在这种情况下,选择是为了更精细地操纵新元素。有关如何将select与函数结合使用的示例,请参阅,该函数允许您执行改编自d3 API文档的示例。为此,如果您删除与讨论此示例的相关API文档部分的链接,也可能会有所帮助。示例位于中。但该示例没有select?我想我得学习一下你的例子。
d3.selection.prototype.append = function(name) {
  return this.select(function() {
    return this.appendChild(document.createElement(name));
  });
};