无法在FOR之外引用JSON导入的对象

时间:2014-07-27 05:51:12

标签: javascript json for-loop properties undefined

我无法引用导入的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] 
    } 
});

1 个答案:

答案 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);