2

散布図を作成し、各ドットにリンクを追加したいと考えています。

    chart.selectAll("scatter-dots")
      .data(data)
      .enter().append("circle")
        .attr("cx", function (d) { return x(d.position[0]); } )
        .attr("cy", function (d) { return y(d.position[1]); } )
        .attr("r", 4)
        .style("fill", "#666")
        .style("opacity", 0.5)
    .on("click", function(){
        var url = "http://somelink.com/link.php?id=";
        url += d.link_id;
        //$(location).attr('href', url);
        //window.location = url;    
    });

window.location = "http://stackoverflow.com" などの純粋な文字列リンクを配置するだけで機能しますが、変数から URL の末尾にクエリを追加すると、ページはリダイレクトされません。

jqueryもjavascriptも機能しませんでした(コメントされています。)

外部jsファイルも試しましたが、まだ失敗します。

これが役立つ場合、これはPHPファイルにあります。

4

1 に答える 1

8

静的文字列で動作する場合は、d.link_id に問題があります。alert(d.link_id)を実行するか、firebug などを使用する場合は do を実行して、内部の内容を確認してくださいconsole.log(d.link_id)

または、クリック イベントを設定する代わりに、ノードをリンクするために実際のアンカーを使用する必要があります。これは次のようになります...

chart.selectAll("scatter-dots")
  .data(data)
  .enter()
  .append("a")
    .attr("xlink:href", function(d) {return "http://somelink.com/link.php?id=" + d.link_id})
    .append("circle")
      .attr("cx", function (d) { return x(d.position[0]); } )
      .attr("cy", function (d) { return y(d.position[1]); } )
      .attr("r", 4)
      .style("fill", "#666")
      .style("opacity", 0.5)

(これが正確な方法であるかどうか思い出せないようです。変数にアンカーを保存してから、円を追加する必要があるかもしれません。)

于 2012-05-13T04:16:48.363 に答える