使用d3获取鼠标点击svg的坐标

hec6srdp  于 2022-12-04  发布在  其他
关注(0)|答案(2)|浏览(255)

我想得到一个矩形SVG上鼠标点击的坐标。我正在尝试将鼠标点击的坐标打印到控制台。
我可以使用pageXpageY来获得坐标,但这是整个页面的坐标。我只需要SVG中的坐标。
我使用的是d3.v3.min.js
于是我试探着:

$(document).mousedown(function () {
     console.log(d3.mouse(this));
});

我得到错误:
未捕获的类型错误:无法读取null的属性'sourceEvent'
我也试探着:

$(document).mousedown(function () {
     console.log(d3.mouse(document.getElementById("svg_id")));
});

我得到同样的错误。
当我尝试使用d3.svg.mouse(this)时,出现错误:
未捕获的类型错误:undefined不是函数
如何在svg中获得点击坐标?为什么这些d3.mouse()函数不起作用?

t98cgbkg

t98cgbkg1#

您的代码的问题在于您使用的是jQuery事件处理而不是D3事件处理。

var svg = d3.select("svg");
svg.on("click", function() {
    console.log(d3.mouse(svg.node));
})
hmae6n7t

hmae6n7t2#

也许是时候在这里进行更新了?使用JSv 7,我认为这将是等效的代码片段:
svg.on("click", d => console.log([d.clientX, d.clientY]));
最近,d3 JS似乎已经直接使用了发生事件的节点的ClientX和ClientY属性,而没有使用任何类型的“鼠标”对象/方法。

相关问题