【发布时间】:2022-01-11 14:14:59
【问题描述】:
我正在使用 D3 图表,通过所有工作,我已经完成了图表并进行了一些改进。
我在做什么
- 我有一个显示工具提示的功能,每当我将鼠标悬停在任何栏上时,我都会向用户显示一些信息。
- 我的图表显示实时数据,因此如果有任何新数据出现,它会自动创建一个新柱。
- 所以,当我将鼠标悬停在任何条上时,数据显示良好且完美
我的问题
-
所以正如我上面提到的,在我的例子中数据是在一段时间后连续出现的,所以我正在获取数据并将其添加到以前的数据中
但在我的编码中,我正在编写代码以删除 mouseout 上的工具提示,但仍然遇到此问题
我的代码
这就是我正在做的事情
.on("mousemove", function (event, d) {
// this whole code is when I hover that perticular bar
d3.select(this)
.transition()
.duration("50")
.attr("opacity", 0.6)
.attr("x", (a) => xScaleBars(a.timeline) - 3)
.attr("width", xScaleBars.bandwidth() + 6)
.style("filter", "url(#glow)");
div.transition().duration(50).style("opacity", 1);
div
.html(
`</text><text"></br> value : ${d.dataToShow}
<br/>
</text><text"></br> Month : ${d.month}
`
)
.style("left", event.pageX - 58 + "px")
.style("top", event.pageY - 140 + "px");
})
上面的代码是我在漫游时的代码
下面是我做mouseout时的代码
.on("mouseout", function (d, i) {
// this is when I move cursor out of that bar
d3.select(this)
.transition()
.duration("50")
.attr("width", xScaleBars.bandwidth())
.attr("x", (a) => xScaleBars(a.timeline))
.style("filter", "none")
.attr("opacity", "1");
div.transition().duration("50").style("opacity", 0);
})
- 我尝试过 display none 和 visibility 属性,但没有任何效果
- 我不知道自己做错了什么
- 我的代码是对是错,这也是我没有正确理解
我已将所有代码放入代码沙箱中 Please have a look
PS:我正在使用每 1 秒设置超时的使用效果,以使其每秒更新一次
我已经通过堆栈溢出检查了所有相关建议,但没有人帮助我,可能是我错了,但我没有找到解决方案。
编辑/更新
如果我有不止一次图表,下面建议的答案不起作用
我用d3.selectAll(".tooltipCHart").remove();
因此,当第一个图表的条形图悬停有两个图表时,它会显示工具提示,但是当我将鼠标悬停在另一个图表上时,它不会显示
在上面第一个图表中的代码沙箱中,它不显示工具提示,但在第二个图表中显示
【问题讨论】:
标签: javascript html reactjs d3.js react-hooks