У меня возникли проблемы с переходом на работу, потому что метод d3.select() не работает. Я нашел обходное решение, используя document.getElementId() и применяя это изменение, вручную изменяя атрибуты выбранного элемента DOM. В браузере все отображается очень хорошо, поэтому я пошел на консоль, чтобы провести какое-то расследование.
Я обнаружил, что в консоли, когда я печатаю
document.getElementId("elementId")
он возвращает элемент DOM, как ожидалось, но когда я использую
d3.select("#elementId")
или же
d3.select("elementId")
он возвращает следующий объект:
>pt {_groups: Array[1], _parents: Array[1]}
Может ли кто-нибудь, кто знает больше об этом, объясняет, что происходит и как получить d3.select, чтобы вернуть фактический объект DOM?
d3.select("#elementId")
возвращает выбор D3 (который с D3 v4.x является объектом вместо массива), а не элементом DOM. Это ожидаемое поведение.
Чтобы получить фактический элемент DOM, используйте метод node()
:
d3.select("#elementId").node();
Вот демонстрация:
var node = d3.select("#foo").node();
var selection = d3.select("#foo");
console.log("node: ", node)
console.log("selection: ", selection)
<script src="https://d3js.org/d3.v4.min.js"></script>
<p id="foo">This is a paragraph</p>