簡體   English   中英

單擊時,在d3.js的單獨div中顯示其他數據; 價值傳遞

[英]On click, display other data in separate div in d3.js; Passing by value

我正在d3中處理無向圖。 單擊節點時,我想在svg之外的單獨div(類:info)中顯示其數據。 但是,我不知道如何將數據從節點放置到div。

var node = svg.selectAll(".node")
              .data(graph.nodes)
              .enter().append("circle")
              .attr("class", "node")
              .attr("r", 5)
              .style("fill", function(d) { return color(d.group); })
              .call(force.drag)
              .on("click", function(d){
                    d3.selectAll(".node").attr('r', 5)
                                         .style("fill", function(d) { return color(d.group); })
                                         .style("stroke","none");       
                    d3.select(this).attr('r', 25)
                                   .style("fill","lightcoral")
                                   .style("stroke","red");

                    d3.select("#info").text(/* TEXT */);
                });

我試過了:

  1. 我已經嘗試過d3.select("#info").text(function(d){return d.text;}); 但是,如果我正確理解的話, d將引用當前選擇中的數據。 因此,由於當前選擇為div #info ,因此d3.select("#info")內沒有數據。
  2. 我還嘗試將function(d){return d.text;}綁定到變量,並將該變量傳遞給text() 但是,JavaScript不能按值傳遞; 與#1相同。

我已經讀過有關僅為文本創建對象的信息。 我想我在這里忽略了一些東西。 有沒有一種優雅的方法來顯示從節點到svg之外的div的數據?

拉爾斯是對的​​: d3.select("#info").text(d.text);

d3.select("#info").text(function(d){return d.text;}); ,將一個函數傳遞給.text()就是要在您剛剛選擇的#info元素的上下文中對該函數進行評估。 但是您已經處在要從中獲取文本的節點的上下文中,並且要訪問的d (在Lars的回答中)是傳遞給您的click回調的d 因此,只要d具有所需的.text屬性,就應該進行業務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM