Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript D3.js:select(”body“).selectAll(”p“)和selectAll(”p“)之间的区别?_Javascript_Dom_D3.js - Fatal编程技术网

Javascript D3.js:select(”body“).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

有人知道有什么区别吗

我的理解是,两者都将返回相同的选择

但是,当我执行追加时,如果我使用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")
为什么后者不起作用?

这里的简短回答是,“因为没有任何附加内容。”虽然您正确地认为,
d3.selectAll(“p”)
d3.select(“body”).selectAll(“p”)
将选择相同的现有节点,选择
body
元素首先设置使用
.append()
方法添加的新节点的上下文

如果不选择
body
,您在DOM树中就没有插入节点的点-我猜d3会尝试将新节点附加到
文档
对象,这会导致
层次结构请求错误