javascript - d3 通过 id 获取 rect 属性

标签 javascript svg d3.js selection

当我尝试选择 svg 中的 rect 对象的属性时,我遇到了一个问题。 这是我想要从中获取值的矩形:

<rect id="2" x="13.761467889908257" y="50" width="49.31192660550459" height="50" fill="rgb(43,0,0)"></rect>

为了计算另一个矩形的 x 位置,我需要 x 值。

我尝试了一些不同的想法,例如:

svg.selectAll("rect")
   .select("id",2);               // 1st version
   .select("id","2");             // 2nd version
   .select("#2");                 // found in another d3 tutorial -> not working for me

还有更多。 有什么办法可以做到这一点吗?

//如果您需要更多我的代码,只需将其写在注释中,我不确定要写多少以免写太多

最佳答案

根据 HTML 4,id 不能以数字开头。 HTML 5 确实改变了这一点,但 CSS 和 d3 仍然不真正支持这一点。因此,如果没有必要,将 id 值更改为不以数字开头可能会更容易。我认为这个问题就是 #2 选择器不起作用的原因。

如果您确实想保留 id = 2,您可以使用属性选择器在一行中完成此操作,如下所示:

svg.select("rect[id='2']")

您可以阅读 Mike Bostock 关于 id 以数字开头的说法 here .

然后,一旦您做出选择,只需执行 .attr("x") 即可。

关于javascript - d3 通过 id 获取 rect 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25204073/

相关文章:

d3.js - 平静力量布局的初始刻度

javascript - 将 "this"引用传递给 javascript 中的方法的提示

javascript - 当 <svg> 改变大小时缩放路径和形状

html - 在悬停时动画 SVG

javascript - 删除 d3js 不工作的事件监听器

javascript - 如何使用 nvd3、d3、javascript 错开子弹图

d3.js - 用单行重新创建矩形波动画

javascript - node.js 中的 response.end 连接丢失

javascript - 防止动态添加类的 jQuery 工具提示在 mouseleave 上关闭

Javascript - EXTjs 访问数组值