【问题标题】:Retrieve node name by it's ID. (D3JS)通过其 ID 检索节点名称。 (D3JS)
【发布时间】:2021-07-17 12:21:04
【问题描述】:

我目前正在尝试使用一种“通用”工具提示。在这里,显示了来自当前“活动”节点的名称和其他一些数据。例如。当 id 为 3 的节点是活动节点时,工具提示会显示 id=3 的节点的名称,例如距离(不是链接距离!)。

但是,我似乎无法选择给定的节点。 我不断收到“SyntaxError: Document.querySelector: '#3' is not a valid selector”

下面是代码:

var currNode = 3; // The active node ID
var position = d3.select("#" + currNode).name // The data I want to show, e.g. the name

然后变量“位置”显示在工具提示中使用

var tooltip = this.svg.append("text")
      .attr("x", 25)
      .attr("y", 25)
      .text("Your current position: " + position )
      .style("font-weight", 550)
      .style("font-size", 18)

是否有人有(不同的)访问给定节点数据的方式?

提前致谢!

【问题讨论】:

  • 您可以使用 d3 datum: gist.github.com/hugolpz/824446bb2f9bc8cce607 将数据对象绑定到元素
  • 是的,谢谢,我已经看到了。但是,我似乎无法理解这一点。我将如何仅检索节点的给定属性。例如。我将如何使用datum 询问 ID=3 的节点名称
  • 假设您有一个数据对象,然后添加一个元素,然后将数据对象绑定到该元素。你的问题是如何通过数据对象中存储的ID找到DOM中的元素?
  • 非常抱歉,但我似乎不明白。你能举一个实际的例子吗?我的意思不是我问题的答案,而是您评论的一个实际例子。
  • 如果我正确理解了您的问题,您需要在工具提示中显示有关悬停元素的一些信息。对吗?

标签: javascript angularjs typescript d3.js


【解决方案1】:

通过id在对象数组中查找对象:

const nodeName = nodes.find(node => node.id === id).name;

【讨论】:

  • 在我看来,这非常接近。然而,这返回[object Object],在我看来,它只是返回节点属性的类型。我现在将如何在如何返回给定属性的值方面取得进展? var position = nodes.find(node => node.id === currNode)提前感谢您的时间和精力!
  • 天啊,是的!谢谢你。我不敢相信我没有尝试.name。谢谢,这行得通!我检查了你的答案是正确的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多