我真的很讨厌 javascript,但你必须学习。我试图通过一个 json 字符串循环来构建一个表。它正在工作(有点)。但是一件是行不通的。我尝试循环遍历一组布尔值。如果是真的,添加一个带有文本“yes”的列,如果它是假的,添加一个带有“no”的列。但那部分行不通。它根本不会添加任何值!
非常感谢我的代码的其他建议:
var jsonstr = '{"no_of_places": 4, "teams": {"Player 1": {"done": [true, true, true, false], "time": null}, "Player 2": {"done": [true, true, true, true], "time": "0 dagar 1:10:21"}, "Player 3": {"done": [true, true, true, true], "time": "0 dagar 2:47:34"}}}';
$(document).ready(function () {
var result = jQuery.parseJSON(jsonstr);
var theadTr = $('.scorestable thead tr');
theadTr.append('<th>Team</th>');
// Adds one header for each place
for (var i = 0; i < result.no_of_places; i++) {
theadTr.append('<th>' + (i + 1) + '</th>');
}
// Add teams and their result.
$.each(result.teams, function (index, value) {
var row = ['<tr><td>', index, '</td><td>'];
// Add if place is found or not.
$(this.done).each(function () {
if (this === true) {
row.concat(['<td>yes</td>']);
} else {
row.concat(['<td>no</td>']);
}
});
$('.scorestable tbody').append(row.join('') + '</tr>');
});
});
简单的 HTML 模板:
<p></p>
<table class="scorestable">
<thead>
<tr></tr>
</thead>
<tbody></tbody>
</table>
提示(或自我注释,如果你愿意)
我真的从 Kevin B 的这个简单片段中学到了很多:
$.each(["foo","bar","foobar"],function(i,val){ console.log(typeof this,typeof i,typeof val); }); // OUTPUTS: // ======== // object number string // object number string // object number string
数组在 javascript 中是不可变的(如果我使用错误的术语,请编辑)。
// So instead of: origArray.concat(['more', 'values']); // I need to write: origArray = origArray.concat(['more', 'values']);