使用D3

时间:2017-05-25 21:43:09

标签: d3.js

当我点击使用D3库创建的饼图切片时,我试图传递一个参数,并将以下代码发送到Filemaker数据库脚本。数据集采用对象数组格式。

var dataset = [{key: 1, amt: 5}, {key: 2, amt: 10}, {key: 3, amt: 20}];

我可以用常量代替d.amt并将常量传递给Filemaker。 我最初使用数组格式绘制饼图,onclick使用d.value工作正常。

d.amt是否使用正确的语法来传递对象数组格式的参数?

            var arcs = svg.selectAll("g.arc")
                  .data(pie(dataset))
                  .enter()
                  .append("g")
                  .attr("class", "arc")
                  .attr("transform", "translate(" + outerRadius + "," + outerRadius + ")")
                  .attr("onclick", function(d, i){
                         return "location.href='" + script + "&param=" + d.amt  + "'";

            });

添加饼图的.on("click", function(d, i) {..没有绘制。对于location.href = "script&param=" + d.amt;我需要'" + script + "&param=" + d.amt + "'";,以防它有所作为。 这就是我所拥有的;

                      ...
                      .attr("transform", "translate(" + outerRadius + "," + outerRadius + ")")
                      .on("click", function(d, i) {
                             location.href ="script&param=" + d.amt;
                      }; 

1 个答案:

答案 0 :(得分:0)

d3的on功能可以更好地实现目的:

svg.selectAll("g.arc)
  ...
  .on("click", function(d, i) {
    location.href = script + "&param=" + d.amt;
  });

attr在创建元素时静态设置目标。点击发生时on动态确定目标。

除此之外,d.amt是正确的,我也希望您的attr变体能够正常运作。