问题 D3.js:select(“body”)。selectAll(“p”)和selectAll(“p”)之间的区别?


有谁知道有什么区别?

我的理解是两者都会返回相同的选择。

但是,当我进行追加时,如果我使用selectAll(“p”)它就不起作用。

例如,这有效:

var foo = d3.select("body").selectAll("p")
    .data([1,2,3,4])

foo.enter.append("p")

虽然这不起作用:

var foo = d3.selectAll("p")
    .data([1,2,3,4])

foo.enter.append("p")

为什么后者不起作用?


12768
2017-12-12 22:22


起源

我自己碰到了这个:-) Phew,最后它起作用了...... - w00t
@Jia He Lim,您是否可以将答案标记为正确? - VividD
我怎么做??? - Jia He Lim


答案:


这里简短的回答是,“因为没有什么可以附加的。”虽然你是对的 d3.selectAll("p") 和 d3.select("body").selectAll("p") 会选择相同的 现有 节点,选择 body element首先设置上下文  节点添加了 .append() 方法。

没有选择 body,你没有在DOM树中插入你的节点 - 我猜d3试图将新节点附加到 document 对象,这导致了 HIERARCHY_REQUEST_ERROR  在这里讨论


16
2017-12-14 01:27