将.attr()添加到变量中 - Jquery

时间:2013-07-02 06:55:50

标签: javascript jquery d3.js

我正在使用Rickshaw框架,它使用D3进行可视化。我正在创建一个变量节点,我将附加Rectangle。我希望Padding在满足特定条件时为20。

 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 个答案:

答案 0 :(得分: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);
}