我在引用导入的JSON数据时遇到了问题。如果我运行一个FOR循环,那么就会找到i==1,并且输出可以正常工作。如果我试图在FOR循环之外引用它,那么它会失败,并出现错误"Uncaught : Cannot read property 'Tname‘of undefined“
这行得通..。
for (var i in towns) {
if (i == 1) {
ctx.fillText(towns[i].Tname, 0, 0);
}
}下一行失败,并显示“未捕获TypeError:无法读取未定义的属性'Tname‘”。这一额外的行将直接写在上面的循环之后。
ctx.fillText(towns[1].Tname, 0, 0);我尝试了许多不同的格式,但都失败了。Towns1的输出是Object Object。
对于那些有疑问的人,这里有来自towns.json的代码片段:
{"towns":[
{"Tid":"2057277", "Tname":"York"},
{"Tid":"2057575", "Tname":"Yanchep"}
]}这是JSON到towns[]的代码:
var towns[];
$.getJSON('towns.json', function(data) {
for (var i in data.towns) {
towns[i] = data.towns[i]
}
});发布于 2014-07-28 14:10:40
感谢您的反馈。这完全是一个语法问题。for循环内部和外部的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);https://stackoverflow.com/questions/24978288
复制相似问题