2013-07-02 2 views
0

Я использую фреймворк Rickshaw, который использует D3 для визуализации. Я создаю переменный узел, где я добавляю Rectangle. Я хочу, чтобы заполнение было 20, когда оно удовлетворяло конкретному условию.Добавление переменной .attr() в переменную - JQuery

var nodes = graph.vis.selectAll("path").data(series.stack.filter(function(d) { 
        return d.y !== null 
       })).enter().append("svg:rect").attr("x", function(d) { 
    console.log(brandCount[v]) 
    if(d.x == brandCount[v]) { 
     console.log("called2") 
     v++; 

     var z = 0; 
     padding = 10; 
    } else { 
     padding = 0; 
    }.attr("y", function(d) { 
        return (graph.y(d.y0 + Math.abs(d.y))) * (d.y < 0 ? -1 : 1) 
       }).attr("width", 30).attr("height", function(d) { 
        return graph.y.magnitude(Math.abs(d.y)) 
       }).attr("rx", 4).attr("transform", transform); 

Что мне делать для доступа и добавления атрибута к переменной?

Марка, массив имеет множество значений ([1, 4, 1, 4, 1, 6, 1, 5, 1, 1, 1, 1, 1, 6, 1, 1, 1, 6, 4, 1, 2, 2, 1, 1, 1, 5, 8, 4, 1, 6, 3, 1, 9, 1, 1, 4, 2, 1, 1, 5, 1, 1, 1, 7, 1, 1, 2, 3, 1, 2, 2, 1, 1, 2, 1, 3, 2, 1, 1, 1, 1, 5, 1, 1, 1, 1, 7, 1, 1, 2, 6, 1, 6, 1, 3, 2, 2, 1, 4, 2, 1]). После каждого значения мне нужно пространство. Я просто попытался зациклить его ... как brand_count [v] и увеличить его на v ++.

ответ

1

Вы должны оценить ваше состояние внутри функции, которая устанавливает атрибут x, т.е.

.attr("x", function(d) { 
    if(z == brand_Count[v]) { 
     v++; 
     z = 0; 
     padding = 10; 
    } else { 
     padding = 0; 
    } 
    return graph.x(d.x) + padding; 
} 

Для добавления отступов после 5 значений, вам не нужен отдельный счетчик:

.attr("x", function(d, i) { 
    return graph.x(d.x) + (Math.floor(i/5)*20); 
} 

Для добавления дополнений после определенных значений вы можете сделать что-то вроде этого:

var counter = 0; 
// ...more code... 
.attr("x", function(d) { 
    if(d == 1 || d == 4) counter++; 
    return graph.x(d.x) + (counter*20); 
} 

Если значения хранятся в массиве:

var counter = 0, brandCount = [1,2,3]; 
// ...more code... 
.attr("x", function(d) { 
    if(brandCount.indexOf(d) != -1) counter++; 
    return graph.x(d.x) + (counter*20); 
} 
+0

Поблагодарите так много. Это процедура добавления правки? Я не получаю места после согласования ... – Ash

+0

Я только что взял ваш код и сделал его работу. Если вы более четко объясните, что хотите, я могу помочь вам в этом. –

+0

Отличная ... Проверка Pls с отредактированным вопросом .. – Ash

Смежные вопросы