Javascript d3.select与document.getElementById

Javascript d3.select与document.getElementById,javascript,dom,d3.js,Javascript,Dom,D3.js,由于d3.select()方法不起作用,我在转换工作时遇到困难。通过使用document.getElementId()并通过手动更改所选DOM元素的属性来应用更改,我找到了一个解决方法。所有东西在浏览器中都显示得很好,所以我去控制台做了一些调查 我在控制台中发现,当我键入 document.getElementId("elementId") 它按预期返回DOM元素,但当我使用 d3.select("#elementId") 或 它返回以下对象: >pt {_groups: Array[

由于d3.select()方法不起作用,我在转换工作时遇到困难。通过使用document.getElementId()并通过手动更改所选DOM元素的属性来应用更改,我找到了一个解决方法。所有东西在浏览器中都显示得很好,所以我去控制台做了一些调查

我在控制台中发现,当我键入

document.getElementId("elementId")
它按预期返回DOM元素,但当我使用

d3.select("#elementId")

它返回以下对象:

>pt {_groups: Array[1], _parents: Array[1]}
了解更多这方面的人能解释一下发生了什么,以及如何获取d3.select以返回实际的DOM对象吗

d3.select(“#elementId”)
返回一个d3 selection(因为d3 v4.x是一个对象而不是数组),而不是DOM元素。这是预期的行为

要获取实际的DOM元素,请使用方法
node()

下面是一个演示:

var node=d3.select(“#foo”).node();
var selection=d3.选择(“foo”);
日志(“节点:”,节点)
console.log(“选择:”,选择)


这是一个段落,它返回null,即使元素存在。@thewayup-nope,它不返回null。检查控制台:这是不正确的(有人甚至否决了你的答案)。你确定那页只有一个ID吗?ID必须是唯一的。好吧,除非你提供一个复制行为的方法,否则我无能为力。@thewayup不要误解Gerardo:这是为了挑战你,而不是让你难堪!如果你真的能够建立一个演示来支持你的假设,即仅凭ID进行选择是行不通的,我真的鼓励你与社区分享它,因为它可能会证明非常有趣。

>pt {_groups: Array[1], _parents: Array[1]}
d3.select("#elementId").node();