d3.select против document.getElementById

1

У меня возникли проблемы с переходом на работу, потому что метод 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.js
dom

1 ответ

6
Лучший ответ

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>
  • 0
    Выполнение этого возвращает ноль, даже если элемент существует.
  • 0
    @ thewayup Нет, он не возвращает ноль. Проверьте консоль: jsfiddle.net/ehmuro5y
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню