2013-07-02 2 views
0

У меня есть массив, называемый ключами [1:"XXX",2:"YYY"], и у меня есть два элемента 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"); 

Довод attr и text методов является функцией, которая принимает элемент данных и использовать его значение для вычисления значения атрибута или текста. Вы используете значение глобальной переменной keys, которая имеет два элемента.

+0

Это дает мне то же самое. – mike628

+0

Можете ли вы создать jsFiddle с кодом? –

+0

http://jsfiddle.net/ - это сайт, который позволяет вам публиковать код. Другие пользователи могут разблокировать ваш код, изменить его и помочь вам отлаживать. –