我无法引用导入的JSON数据。如果我运行FOR循环,则找到i == 1并且输出有效。如果我尝试在FOR循环之外引用它,那么它将失败并显示错误“未捕获的TypeError:无法读取未定义的属性'Tname'”
这有效......
for (var i in towns) {
if (i == 1) {
ctx.fillText(towns[i].Tname, 0, 0);
}
}
下一行失败,出现“Uncaught TypeError:无法读取未定义的属性'Tname'”。在上述循环之后直接写入这个额外的行。
ctx.fillText(towns[1].Tname, 0, 0);
我尝试了很多不同的格式,但都失败了。 “城镇[1]”的输出是“[对象]”。
对于那些提问,这里是来自towns.json的片段:
{"towns":[
{"Tid":"2057277", "Tname":"York"},
{"Tid":"2057575", "Tname":"Yanchep"}
]}
这是来自towns []代码的JSON:
var towns[];
$.getJSON('towns.json', function(data) {
for (var i in data.towns) {
towns[i] = data.towns[i]
}
});
答案 0 :(得分:0)
感谢大家的反馈。 这完全是语法问题。 FOR循环的内部和外部不同。 @Bergi感谢你指点我正确的方向。
//this worked inside the loop
ctx.fillText(towns[i].Tname, 0, 0);
//the same syntax failed outside the loop
ctx.fillText(towns[1].Tname, 0, 0);
//this syntax worked outside the loop
ctx.fillText(towns[1]['Tname'], 0, 0);