为什么我的d3选择指数不起作用

时间:2014-02-23 22:11:45

标签: d3.js indexing selection

这里是标签绘图功能的代码片段

var legend = d3.select("." + to_chart)
    .append("g")
    .selectAll("g")
        .data(data)
            .enter().append("rect")
            .attr("width", 20)
            .attr("height", 20)
            .attr("x", 20)
            .attr("y", 20)
            .attr("transform", function(d, i){return "translate(0," + i * 30 + ")";})
            .attr("style", "stroke: #000; stroke-width: 1px")
            .attr("fill", function(d, i) { return color(i); });
var legend = d3.select("." + to_chart)
    .append("g")
    .attr("class", "t")
    .selectAll(".t")
        .data(data)
            .enter().append("text")
                    .attr("x", function(data, i){return i;})
                    .attr("y", 20)
                    .text(function(i){if (i = 0){
                        return "eff";
                    } else if (i = 1) {
                        return "non-eff";
                    }
                    ;});

为什么.attr(" x",function(data,i){return i;})正在运行,但是 .text部分不?它始终得到' 1'值。

1 个答案:

答案 0 :(得分:1)

好的,我举了一个例子......除了我在function(d,i){...}中提到的问题,你的比较运算符错了......你想用=====代替=。所以这是交易:

var data = ["mary","goes"]

var legend = d3.select("body").append("svg").append("g")
    .attr("class", "t")
    .selectAll(".t")
    .data(data)
    .enter()
  .append("text")
    .attr("x", function(d, i){return i * 30;})
    .attr("y", 20)
    .text(function(d,i){
        if (i === 0){
            return "eff";
        } else if (i === 1) {
            return "non-eff";
        }
    ;});

这导致:

eff non-eff