d3选择器:在代码中工作但不在控制台中工作。为什么?

时间:2012-12-20 17:09:06

标签: javascript firebug d3.js

使用d3,我可以:

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

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

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

但是在firebug控制台中:

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

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

为什么?

1 个答案:

答案 0 :(得分:1)

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

在您声明本地var labels的地方,也将其存储在全局调试范围内(例如,通过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