将HTML链接分配给树节点文本

时间:2014-06-17 12:35:39

标签: javascript d3.js visualization data-visualization

似乎无法在D3树的节点上为文本分配HTML链接......

完整代码位于:http://bl.ocks.org/Guerino1/raw/ed80661daf8e5fa89b85/

我使用以下代码(在第162行):

      nodeEnter.append("svg:a")
          .attr("xlink:href", function(d) { return d.hlink; })
        .append("text")
          .attr("x", function(d) { return d.children || d._children ? -10 : 10; })
          .attr("dy", "-10")
          .attr("fill", "Blue")
          .attr("text-anchor", function(d) { return d.children || d._children ? "end" : "start"; })
          .text(function(d) { return d.name; })
          .style("fill-opacity", 1e-6);

代码似乎与Force Directed Graphs一起工作正常但我不能使用它来使用这棵树。当我打开DOM树时,我发现即使DOM元素" a"也没有分配HTML链接。和"文字"存在。

1 个答案:

答案 0 :(得分:2)

您正在从数据中删除href属性。当传递给nodes函数时,请查看update,然后在传递给.data函数时查看它。

这一行是罪魁祸首:var nodes = tree.nodes(root).reverse();

编辑:

更正:nodeByName功能是罪魁祸首。

这样做:

function nodeByName(name) {

    for (var i = 0; i < nodeSet.length; i++){
        if(nodeSet[i].name === name) return nodeSet[i];
    }

    console.log("ERROR: This node name is not in the node set.")

    return nodeSet[name] = {name: name};

    //return nodeSet[name] || (nodeSet[name] = {name: name});
}