在javascript d3.js中使用命名空间时未更新全局变量
因此,我正在构建一组在页面内调用的函数。它们都位于一个文件“seeingPlotFunc.js”中,我将其和html文件体中的一些函数称为seeingPlotFunc.js。开始时声明了dome全局空数组,但当调用更新它们的函数时,它们仍然返回空数组: 请参阅PlotFunc.js中的相关代码:在javascript d3.js中使用命名空间时未更新全局变量,javascript,d3.js,global-variables,Javascript,D3.js,Global Variables,因此,我正在构建一组在页面内调用的函数。它们都位于一个文件“seeingPlotFunc.js”中,我将其和html文件体中的一些函数称为seeingPlotFunc.js。开始时声明了dome全局空数组,但当调用更新它们的函数时,它们仍然返回空数组: 请参阅PlotFunc.js中的相关代码: var seeingPlot = seeingPlot || {}; seeingPlot.jsondata1 = []; seeingPlot.initialData = function ()
var seeingPlot = seeingPlot || {};
seeingPlot.jsondata1 = [];
seeingPlot.initialData = function () {
d3.json(seeingPlot.initialphp1, function(error1, data1) {
// after getting the data it's parsed into array
data1.forEach(function(d){
d.date = seeingPlot.parseDate(d.date);
d.f_tok = +d.f_tok;
seeingPlot.jsondata1.push(d);
})
})
}
以及html文件中的相关代码:
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script language="javascript" type="text/javascript"
src="JS/seeingPlotFunc.js"></script>
<script type="text/javascript">
seeingPlot.initialData();
console.log(seeingPlot.jsondata1);
</script>
</body>
参见plot.initialData();
log(参见ingplot.jsondata1);
它返回一个空数组。如果我在将所有数据放入数组后调用它,它将返回正确的值。我已经花了很长时间研究这个函数了…我认为d3.json中的函数是异步调用的。因此,您需要等待回调函数,然后才能获得数组
seeingPlot.initialData = function (OnComplete) {
d3.json(seeingPlot.initialphp1, function(error1, data1) {
// after getting the data it's parsed into array
data1.forEach(function(d){
d.date = seeingPlot.parseDate(d.date);
d.f_tok = +d.f_tok;
seeingPlot.jsondata1.push(d);
})
OnComplete();
})
}
还有你的HTML
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script language="javascript" type="text/javascript"
src="JS/seeingPlotFunc.js"></script>
<script type="text/javascript">
seeingPlot.initialData(function ()
{
console.log(seeingPlot.jsondata1);
});
</script>
</body>
参见绘图。初始数据(函数()
{
log(参见ingplot.jsondata1);
});
可能是因为在d3.json上(请参见plot.initialphp1,function(error1,data1)data1和error1不是新的变量,而是应该被称为error和data的预期变量???是的,它需要回调。谢谢!我会在发布具体解决方法后立即关闭它,但可能需要一段时间。