D3 Координаты круга наведения курсора мыши

#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 круга?

Скрипт всей настройки в ссылке

http://jsfiddle.net/Tu3EZ/

Комментарии:

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 ")"; })
  

Обновленная скрипка