d3.select与document.getElementById

时间:2017-10-24 20:48:10

标签: javascript dom d3.js

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

我在控制台中找到的是当我输入

 package sorts;

public class SortableArray<T extends Comparable<T>> {
    T[] GenList;


    public SortableArray(T[] theList) {
        GenList = theList;
    }

    public SortableArray(int[] theList) {
        Integer[] temp = new Integer[theList.length];   
        for(int i = 0; i < theList.length; i++) {
            temp[i] = new Integer(theList[i]);
        }
        GenList = (T[]) temp; //warning here
    }
}

它按预期返回DOM元素,但是当我使用

document.getElementId("elementId")

d3.select("#elementId")

它返回以下对象:

d3.select("elementId")

有更多了解这个的人可以解释发生了什么以及如何让d3.select返回实际的DOM对象吗?

1 个答案:

答案 0 :(得分:6)

d3.select("#elementId")返回 D3选择(由于D3 v4.x是对象而不是数组),而不是DOM元素。这是预期的行为。

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

d3.select("#elementId").node();

这是一个演示:

&#13;
&#13;
var node = d3.select("#foo").node();
var selection = d3.select("#foo");
console.log("node: ", node)
console.log("selection: ", selection)
&#13;
<script src="https://d3js.org/d3.v4.min.js"></script>
<p id="foo">This is a paragraph</p>
&#13;
&#13;
&#13;