我正在使用 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>");
}
关于javascript - For...in 循环不从 JSON 对象列表返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30924972/