我是html的新手,我正在尝试将变量data
设置为包含csv文件行的对象数组。当我运行我的代码并检查页面时,控制台说“无法读取未定义的属性'长度'。”但是,当我在控制台中键入data.length
时,它会打印18411(我的csv文件中的行数)。当我能在控制台中清楚地打印出长度时,为什么还会出现此错误?
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script type = "text/javascript">
var data;
d3.csv("../Data/crime_2016.csv", function(d){
data = d;
});
var length = data.length;
</script>
</head>
<body>
</body>
</html>
答案 0 :(得分:3)
这与变量范围和回调有关。
您在d3.csv函数的回调中分配data = d
。因为您正在定义函数数据之外的数据,所以在函数运行后可以在控制台中查看数据。
但是,在您的代码中,您尝试在回调执行之前访问数据的length属性,此时已声明data
但未赋值给它,因此length是{{1的属性变量。
如果您想访问代码中的undefined
,则需要在回调函数中执行此操作,否则将从回调中返回承诺。
data.length
答案 1 :(得分:-1)
您可以使用以下代码:
{{data?.length}}