Javascript D3.js:select(”body“).selectAll(”p“)和selectAll(”p“)之间的区别?
有人知道有什么区别吗 我的理解是,两者都将返回相同的选择 但是,当我执行追加时,如果我使用selectAll(“p”),它将不起作用 例如,这是有效的:Javascript D3.js:select(”body“).selectAll(”p“)和selectAll(”p“)之间的区别?,javascript,dom,d3.js,Javascript,Dom,D3.js,有人知道有什么区别吗 我的理解是,两者都将返回相同的选择 但是,当我执行追加时,如果我使用selectAll(“p”),它将不起作用 例如,这是有效的: var foo = d3.select("body") .selectAll("p") .data([1, 2, 3, 4]); foo.enter.append("p") 虽然这不起作用: var foo = d3.selectAl
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")
为什么后者不起作用?这里的简短回答是,“因为没有任何附加内容。”虽然您正确地认为,d3.selectAll(“p”)
和d3.select(“body”).selectAll(“p”)
将选择相同的现有节点,选择body
元素首先设置使用.append()
方法添加的新节点的上下文
如果不选择body
,您在DOM树中就没有插入节点的点-我猜d3会尝试将新节点附加到文档
对象,这会导致层次结构请求错误