作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的代码在 console 中运行,但在加载网站时不会。
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
的信息在 docs .
编辑:正如@elclanrs 所指出的,之前的代码未能解释发布的代码需要重新组织,因此我更新了答案。
关于javascript - 代码在控制台中工作,但在加载网站时不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16803392/
我是一名优秀的程序员,十分优秀!