Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向D3中的节点添加链接_Javascript_Node.js_D3.js - Fatal编程技术网

Javascript 向D3中的节点添加链接

Javascript 向D3中的节点添加链接,javascript,node.js,d3.js,Javascript,Node.js,D3.js,因此,我正在处理d3可视化中的一个问题,我试图创建具有可单击链接的节点。我只是在学习d3,所以我在创建这些链接时遇到了困难。到目前为止,我已经得到了所有节点上的链接,但我想实现的基本目标是为每个节点提供不同的链接。目前,我只是为每个节点输入了一个url,但如何选择单个节点并向其附加链接呢。我希望这样,当用户单击对象节点时,它会转到另一个页面 var onode = svg.append('g').selectAll(".outer_node") .data(data.outer)

因此,我正在处理d3可视化中的一个问题,我试图创建具有可单击链接的节点。我只是在学习d3,所以我在创建这些链接时遇到了困难。到目前为止,我已经得到了所有节点上的链接,但我想实现的基本目标是为每个节点提供不同的链接。目前,我只是为每个节点输入了一个url,但如何选择单个节点并向其附加链接呢。我希望这样,当用户单击对象节点时,它会转到另一个页面

var onode = svg.append('g').selectAll(".outer_node")
        .data(data.outer)
      .enter().append("g")
        .attr("class", "outer_node")
        .on("mouseover", mouseover)
        .on("mouseout", mouseout)
        .on("click", click);

function click (d){
    window.open("https://www.google.com", "_self");
    }

这使得每个节点都有相同的链接,我不知道如何分配不同的链接。有人能帮忙吗?

假设数据集中存储有URL,则可以在函数中访问URL:

function click (d){
    let url = "http://" + d.url; //or whatever your URL field is called in the data
    window.open(url, "_self");
}
您提到了“数组中的位置”,因此如果URL位于单独的数组中,但与数据集对齐,那么您可以使用

function click (d, i){ //is this 0 based index of each item in the selection
    let url = urlData[i]
    window.open(url, "_self");
 }

我相信,通过在函数click中传递d,我实际上就在组中的当前节点上了?这是真的吗?如果是这样的话,我将如何根据数组中的位置分配链接。对不起,只是很困惑怎么做。