javascript - For...in 循环不从 JSON 对象列表返回值

标签 javascript jquery json

我正在使用 for...in 循环将 JSON 数据集中的值写入网页上的无序列表。

当执行下面的代码时,我只得到一个列表项元素,其中包含 JSON 数据中的所有对象,而不是每个对象的单个列表项。 JSON 数据中对象的值也未写入列表项元素。

HTML:

<html>
    <body>
    <ul id="test">
    </ul>   
    <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    <script type="text/javascript" src="doer_json.js"></script>
    </body>
</html>

JS:

$.getJSON('doer_data.json', function(data) {            
for (key in data) {
    $('#test').append("<li>" + data[key] + "</li>");
} // for loop 

$('#test li').css("color", "blue"); });

JSON 数据:

{ "list" : 
            [
                {"todo": "Complete remaining Duckett chapters."},
                {"todo": "Watch AngularJs video on Lynda.com."},
                {"todo": "Complete design specification for Doer app."},
                {"todo": "Complete play."},
                {"todo": "Finish Flatland."},
                {"todo": "Finish Harper's"}

            ]}

有趣的是,当在 .append() 方法中使用 data[key].todo 时,我能够检索 JSON 对象的值并将它们添加到无序列表成功。昨天。今天这段代码不起作用。所以我要么昨天做错了,要么是其他原因导致这段代码不能正确执行。

最佳答案

您要循环的数据在 list 数组中,因此您需要修改代码以使用带有递增索引变量的 for 循环,并遍历 data.list,而不仅仅是 data。试试这个:

for (var i = 0; i < data.list.length; i++) {
    $('#test').append("<li>" + data.list[i].todo + "</li>");
}

Example fiddle

关于javascript - For...in 循环不从 JSON 对象列表返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30924972/

相关文章:

c# - DataTable反序列化后DateTime列类型变为String类型

javascript - 从以 .0 结尾的 JSON 读取和写入浮点值

javascript - 将表 HTML 转换为 JSON

javascript - Chrome 上的 will-change 问题

javascript - javascript 中的切换属性(attr)

javascript - 异步流和全局变量

javascript - 用于 jquery 布局的自定义切换器

javascript - Jquery,搜索并显示隐藏的div

jquery - 在 JQuery 中隐藏某些 SELECT 下拉菜单

java - Spring MVC + JSON = 406 Not Acceptable