代码在控制台工作,但加载网站时不工作

Code working in console but not when loading website

本文关键字:工作 网站 加载 控制台 代码      更新时间:2023-09-26

我的代码在控制台工作,但在加载网站时不工作。

function getData() {
    var a = [];
    d3.csv("../csv/master.csv").get(function (error, rows) {
        for (var i = 0; i < rows.length; i++) {
            a.push(rows[i]);
        }
    });
    return a; 
}
a = getData();
alert(a[0].agency);

奇怪的是,变量a似乎是由网站加载的,因为我可以在控制台中调用它,但是警告抛出一个错误。

("Uncaught TypeError: Cannot read property 'agency' of undefined")

但是,当我在控制台中调用完全相同的警报时,它可以完美地工作。

任何想法?

谢谢,

乔纳斯

d3.csv方法发出异步请求,因此在网站版本中,当您尝试访问数据时,csv文件可能尚未完全加载。您可能应该重新组织您的代码,并将依赖于回调函数中的数据的逻辑。你也可以在数据加载完成时触发一个事件,并让另一个对象监听该事件以开始绘图。

d3.csv('../csv/master.csv', function(error, rows) {
    // The data is available here
    alert(rows[0].agency);
});

关于d3.csv的更多信息在文档中。

EDIT:正如@ elclars指出的,之前的代码没有解释张贴的代码需要重新组织,所以我更新了答案