我有一个ajax调用,它在我编辑一些值并单击提交后返回一些对象数组(这个形式是模态的,虽然我怀疑它与正在进行的事情有什么关系)。成功之后,我在成功属性中传递$ .ajax()回调函数,如下所示:
function updateTable(newArray){
var tableBody = "";
if (newArray) {
tableBody =
"<table>" +
"<thead>" +
"<tr>" +
"<th>Name</th>" +
"</tr>" +
"</thead>" +
"<tbody>";
for (var i = 0; i < newArray.length; i++) {
tableBody =
"<tr>" +
"<td>" + newArray[i].name + "<td>" +
"</tr>";
}
tableBody = tableBody + "</tbody></table>";
}
$('#divTable').empty();
$('#divTable').html(tableBody);
}
让我们说一开始就没有任何内容。我添加了一些值并获得newArray和表正在添加,但浏览器只显示tbody,没有标题,虽然我正在检查网站的源代码,并且有写的。这是为什么?它与渲染表头有连接吗?我不认为它在渲染中,因为我分配给一个<p>
标记的文本也没有变化,尽管它也包含在源代码中代码。
我在.append()
之后使用.empty()
尝试过,但没有变化。
答案 0 :(得分:2)
for
循环不会附加到tableBody
,它每次都会替换它。您需要在作业中使用+=
而不是=
。
for (var i = 0; i < newArray.length; i++) {
tableBody +=
"<tr>" +
"<td>" + newArray[i].name + "<td>" +
"</tr>";
}