#javascript #svg #d3.js
#javascript #svg #d3.js
Вопрос:
Я пытаюсь получить доступ к координатам круга наведения курсора мыши, чтобы можно было нарисовать и анимировать новый круг в том же положении. Круги добавляются, когда пользователь нажимает на страницу, поэтому добавляются с помощью этого свойства при наведении курсора мыши, присвоенного им.
Я пытаюсь получить доступ к положению x, y текущего круга, наведенного с помощью
var y = d3.select(currentCircle).attr("cy");
где currentCircle — это
var currentCircle = this;
Однако это всегда дает null
currentCircle определенно содержит правильный элемент SVG, так как при вызове console.log(currentCircle) мы получаем
<circle transform="translate(590,358)" r="10" style="fill: rgb(0, 0, 0);"></circle>
в консоли.
Как мне получить координаты x и y круга?
Скрипт всей настройки в ссылке
Комментарии:
1. Вы не установили cx или cy, так что это действительно null. Какой ответ удовлетворил бы вас 0 или аргументы преобразования 590 и 358. Если это аргументы преобразования, то прочитайте атрибут преобразования.
2. Вау, теперь я чувствую себя глупо, я думал, что перешел от использования преобразования для установки положения кругов к прямой настройке cx, cy, но это было только для круга анимации наведения курсора мыши. Теперь все работает.
Ответ №1:
Из комментария Роберта:
Оказалось, что я забыл установить cx и cy для кругов при инициализации, поэтому эти свойства были явно нулевыми при чтении.
.attr("cx", x)
.attr("cy", y)
Чтобы установить начальное положение круга, а не
.attr("transform", function(d, i) { return "translate(" x "," y ")"; })