我有这个小方法,在第一次加载时,创建了<tr>
和一些<td>'s
。这样可行。但是,如果基础数据发生更改,则<td>'s
不会更新。我不确定为什么。
function ParseJson(json, isFirstLoad)
{
json = $.parseJSON(json);
var tr;
for (var i = 0; i < json.length; i++) {
if (isFirstLoad === 1)
{
tr = $('<tr/>');
tr.append("<td id='" + json[i].LocationName + "'>" + json[i].LocationName + "</td>");
tr.append("<td id='" + json[i].LocationName + "Count'>" + json[i].Count + "</td>");
$('#MainTable').append(tr);
}
else
{
var td = $("#" + json[i].LocationName + "Count");
td.html = json[i].Count;
}
}
当isFirstLoad为1时,html按照我的预期呈现。例如:
<tr>
<td id="ChemLab">ChemLab</td>
<td id="ChemLabCount">24</td>
</tr>
但是下一次,如果数据发生了变化并且有人离开了Chem Lab,那么ChemLabCount的html不会改变。
我已经验证了传入此方法的json是正确的。意思是,计数确实会改变。它只是没有显示在屏幕上。
答案 0 :(得分:1)
jQuery .html()
是一个函数,而不是属性。
td.html(json[i].Count);
答案 1 :(得分:1)
问题来自td.html = json[i].Count;
,因为这不是使用html()
方法的正确方法。
要将Count
设置为td
,您可以使用.text()
代替:
td.text( json[i].Count );
否则,如果要设置HTML代码,可以使用.html()
:
td.html( json[i].Count );