2013-07-02 24 views
0

我有一个名为键[1:"XXX",2:"YYY"]的数组,我在页面上已经有2个svg元素。我希望每个元素都有一个数组值,但下面的代码将两个值都放在每个文本标签中。我试过keys[i],但是i是未定义的。我怎样才能做到这一点?d3动态文本循环

svg.selectAll("svg"). 
data(keys). 
enter() 
    .append("svg:text") 
     .attr("x", width) 
     .attr("y", height). 
     .attr("dx", -width/2) 
     .attr("text-anchor", "middle") 
     .attr("style", "font-size: 12; font-family: Helvetica, sans-serif") 
     .text(function(keys) { return keys;}) 
     .attr("transform", "translate(0, 18)") 
     .attr("class", "yAxis"); 

回答

0

文本函数参数使用名称keys。尝试用d代替:

svg.selectAll("svg") 
.data(keys) 
.enter() 
.append("svg:text") 
    .attr("x", width) 
    .attr("y", height). 
    .attr("dx", -width/2) 
    .attr("text-anchor", "middle") 
    .attr("style", "font-size: 12; font-family: Helvetica, sans-serif") 
    .text(function(d) { return d;}) 
    .attr("transform", "translate(0, 18)") 
    .attr("class", "yAxis"); 

attrtext方法的参数是一个函数,它接受一个数据元素,并使用其值来计算属性或文本值。您正在使用具有两个元素的全局变量keys的值。

+0

这给了我同样的事情。 – mike628

+0

你可以用你的代码创建一个jsFiddle吗? –

+0

http://jsfiddle.net/是一个允许您发布代码的网站。其他用户可以分叉代码,修改它并帮助您进行调试。 –