访问 d3.js 中的父属性来设置子属性

use*_*194 1 html javascript svg d3.js

我在这里有(部分)HTML:

<g style="fill: rgb(49, 130, 189);" transform="translate(0,0)" x="200" class="chr">
    <circle cy="175.92776604033872" r="3"></circle>
    <circle cy="292.4129588695106" r="3"></circle>
</g>
Run Code Online (Sandbox Code Playgroud)

我正在尝试设置圆圈的 cx 属性,为此我需要访问x父级的属性。我的代码如下:

ch.selectAll('circle')
    .data((d) => {
      return d.values;
    })
    .enter().append('circle')
    .attr('r', 3)
    .attr('cx', (d) => {
      ...
    })
    .attr('cy', (d) => {
      return y(d.num);
    });
Run Code Online (Sandbox Code Playgroud)

有谁知道x在设置cx值时如何获取属性的值?提前致谢!!

Mar*_*ark 6

考虑到@GerardoFurtado 的评论,我假设您出于其他原因将 x 值藏在那里然后定位...

您可以通过以下方式访问父级(和 x 属性):

.attr('cx', function(d) {
  var parentXValue = d3.select(this.parentNode).attr("x");
})
Run Code Online (Sandbox Code Playgroud)

  • 赞成。我没有测试过,但是在这种情况下,胖箭头是否可以与“this”一起使用? (3认同)
  • @GerardoFurtado 的好点子!`this` 在使用粗箭头函数时不会引用元素。您将需要一个普通的函数表达式。 (3认同)