0

使用 d3,我可以:

var labels = d3.select("div#labels").insert("svg:svg")
  //....

然后,我可以在下面的代码中执行以下操作:

labels.selectAll("text")
  //... act upon the selection...

但是在萤火虫控制台中:

>>> labels.selectAll("text")
  // produces: TypeError: labels.select is not a function

和:

>>> d3.labels.selectAll("text")
  //produces: TypeError: d3.labels is undefined

为什么?

4

1 回答 1

1

我猜你有两个不同的labels变量。一个本地的和一个全球的。

在您声明 local 的地方var labels,也将其存储在全局范围内以进行调试(例如, via window.locallabels = labels)。然后在控制台测试您的不同标签是否相同。我猜他们不是。

var labels = { text: "bla" }     // create a new object

function fn(){
    var labels = { text: "bla" } // create another object
    window.locallabels = labels  // save it in global scope for debugging
}

fn();

console.log(labels, locallabels, labels == locallabels) //try this in console
//console: Object { text="bla"} Object { text="bla"} false
于 2012-12-20T18:24:52.283 回答