首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在FOR外部引用JSON导入的对象时出现问题

在FOR外部引用JSON导入的对象时出现问题
EN

Stack Overflow用户
提问于 2014-07-27 13:51:12
回答 1查看 46关注 0票数 0

我在引用导入的JSON数据时遇到了问题。如果我运行一个FOR循环,那么就会找到i==1,并且输出可以正常工作。如果我试图在FOR循环之外引用它,那么它会失败,并出现错误"Uncaught : Cannot read property 'Tname‘of undefined“

这行得通..。

代码语言:javascript
运行
复制
for (var i in towns) {
    if (i == 1) {
        ctx.fillText(towns[i].Tname, 0, 0);
    }
}

下一行失败,并显示“未捕获TypeError:无法读取未定义的属性'Tname‘”。这一额外的行将直接写在上面的循环之后。

代码语言:javascript
运行
复制
ctx.fillText(towns[1].Tname, 0, 0);

我尝试了许多不同的格式,但都失败了。Towns1的输出是Object Object。

对于那些有疑问的人,这里有来自towns.json的代码片段:

代码语言:javascript
运行
复制
{"towns":[
    {"Tid":"2057277", "Tname":"York"},
    {"Tid":"2057575", "Tname":"Yanchep"}
]}

这是JSON到towns[]的代码:

代码语言:javascript
运行
复制
var towns[];
$.getJSON('towns.json', function(data) {
    for (var i in data.towns) { 
        towns[i] = data.towns[i] 
    } 
});
EN

回答 1

Stack Overflow用户

发布于 2014-07-28 14:10:40

感谢您的反馈。这完全是一个语法问题。for循环内部和外部的FOR不同。@Bergi感谢你为我指明了正确的方向。

代码语言:javascript
运行
复制
//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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24978288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档