为了账号安全,请及时绑定邮箱和手机立即绑定

d3 选择 .attr('x1') 返回 r.getAttribute 不是函数

d3 选择 .attr('x1') 返回 r.getAttribute 不是函数

慕森王 2023-05-11 10:17:52
我正在尝试通过 跟踪一条线的位置xScale。所以一旦x1到达 xScale1.range()[1]它的最终位置就应该改变颜色。在 DOM 行中,x1 属性的值为 500。我做错了什么?g1.append('line')  .attr('stroke-width', 1)  .style('stroke', 'white')  .attr('x1', xScale1.range()[0] + 100)  .attr('x2', xScale1.range()[0] + 100)  .attr('y1', yScale1.range()[0])  .attr('y2', yScale1.range()[1])  .transition()  .duration(duration)  .ease(d3.easeLinear)  .attr('x1', xScale1.range()[1])  .attr('x2', xScale1.range()[1])  .style('stroke', function (d) {    changeColour();  })  function changeColour(d) {  if (d3.select(this).attr('x1') === xScale1.range()[1]){    return 'red';  };}
查看完整描述

1 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

this不再指向选择对象,而是指向局部函数范围。通过嵌套函数,您已经更改了该值。您可以通过将 gthis作为参数传递给 来轻松避免这种情况changeColour

function change colour(element)
change colour(this)


查看完整回答
反对 回复 2023-05-11
  • 1 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信