这是一个非常普遍的问题,评论(和否决票)是正确的,您应该在发布之前提供有关您尝试过的内容的更多信息。但是我心情很愉快,所以...
该数据的循环格式非常糟糕。如果你有能力稍微调整一下,那就去做吧。任何一对多的都应该是一个数组(一个日期有很多场景)。任何一对一的东西都应该是同一对象的属性(例如场景名称和平均值)。一旦您的数据采用“正确”格式,您就需要为层次结构的每个级别创建一个嵌套循环。您有两个级别(日期和场景),因此您将有两个循环。每个人都会写一行。
那么一般的想法是:
var dataSet = [{"Date":"2013/02/26",
scenarios: [
{name: "Scn1","Avg": 500,"Count": 5,"Max": 700},
{name: "Scn2","Avg": 800,"Count": 6,"Max": 1000},
{name: "Scn3","Avg":500,"Count":5,"Max":700}
]
}];
(function draw(data) {
var i, j;
for (i = 0; i < data.length; i++) {
$('#myTable').append('<tr><td colspan="4">' + data[i].Date + '</td></tr>');
$('#myTable').append('<tr>');
$('#myTable').append('<td>Scenario</td>');
$('#myTable').append('<td>Average</td>');
$('#myTable').append('<td>Count</td>');
$('#myTable').append('<td>Max</td>');
$('#myTable').append('</tr>');
for (var j = 0; j < data[i].scenarios.length; j++) {
$('#myTable').append('<tr>');
$('#myTable').append('<td>' + data[i].scenarios[j].name + '</td>');
$('#myTable').append('<td>' + data[i].scenarios[j].Avg + '</td>');
$('#myTable').append('<td>' + data[i].scenarios[j].Count + '</td>');
$('#myTable').append('<td>' + data[i].scenarios[j].Max + '</td>');
$('#myTable').append('</tr>');
}
}
})(dataSet);
这是使用 jQuery 向 DOM 添加元素。将有库和插件来执行此操作。如果您想快速修复,可以查看它们。如果你刚开始接触 JavaScript 并希望有一天成为专家,最好先了解循环和遍历对象。
请注意,要完成所有这些,您必须使 test.json 文件可用于您的代码。您可能会使用 AJAX 执行此操作,我建议您阅读以下内容:https ://developer.mozilla.org/en/docs/AJAX
这是工作小提琴:http: //jsfiddle.net/ub587/2/
希望有帮助。