Javascript 获取多个元素的属性值

Javascript 获取多个元素的属性值,javascript,d3.js,Javascript,D3.js,我想以数组的形式获取选择中多个元素的属性值,但我找不到一种简洁的方法 例如,在一个svg元素中,有一些circles,您需要获取它们的cx属性 我试过: var cxs = d3.select("svg") .selectAll("circle") .attr("cx"); 但是结果只是一个圆的值(比如“523.4777243042896”),我需要所有的cxs。 圆的坐标是用复杂的模拟算法计算的,因此不可能用原始数据得到它们。 有什么好方法可以获得所有的价值观吗 谢谢。如果我

我想以数组的形式获取选择中多个元素的属性值,但我找不到一种简洁的方法

例如,在一个
svg
元素中,有一些
circle
s,您需要获取它们的
cx
属性

我试过:

var cxs = d3.select("svg")
    .selectAll("circle")
    .attr("cx");
但是结果只是一个圆的值(比如“523.4777243042896”),我需要所有的
cx
s。 圆的坐标是用复杂的模拟算法计算的,因此不可能用原始数据得到它们。 有什么好方法可以获得所有的价值观吗


谢谢。

如果我理解正确,您希望获得
cx
值的列表。所以,这里有一种方法可以做到这一点

var cxs = [];
d3.selectAll("circle")[0].forEach(function(circle) {
  cxs.push(circle.getAttribute('cx'));
});
要使它稍微短一点,可以使用
map()


如果您将其绑定到数据(您提到的数组),比如说
d3.select(“svg”).selectAll(“circle”).data(array)
,那么您可以简单地使用
.attr(“cx”,函数(d){return d.x;})
,假设数据数组将x坐标作为键值对,如x:someValue。没有看到任何代码,这将是我的猜测。是的,实际上这个解决方案在我的情况下有效,因为我使用的是d3.layout.force,它将x和y属性绑定到相应的数据。但总的来说,这并不奏效。这个解决方案现在似乎是一个现实的解决办法。谢谢!
var cxs = d3.selectAll("circle")[0].map(function(circle) {
  return circle.getAttribute('cx');
});