Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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_Firebug_D3.js - Fatal编程技术网

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

Javascript d3选择器:在代码中工作,但在控制台中不工作。为什么?,javascript,firebug,d3.js,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

使用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
以及:


为什么?

我想你有两个不同的
标签
变量。一个是本地的,一个是全球的

在声明本地
var标签的位置
,也将其存储在全局范围内进行调试(例如,通过
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

没有看到代码的其余部分,我假设答案是“范围”<代码>标签只是在一个较小的范围内定义,一旦您到达Firebug控制台,该范围就不再存在。请提供更多代码。调用函数的上下文是什么?您有一个ID为
labels
的元素。在控制台上,
labels
指的是全局变量
labels
,它是带有ID标签的DOM元素。我想您只能使用选择器来选择内容,而不能使用不再在范围内的变量名。我没有在代码中的d3方法链上使用
attr(“id”,“labels”)
,但一旦我使用了,我就能够在控制台中使用
>>d3.select(“#labels”)
,我想这是一种选择DOM元素而不是不再在上下文中时被销毁的局部变量的情况。谢谢你的回答和时间。
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