我有这个小方法,在第一次加载时,创建了一个<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>
但是下一次,如果数据发生了变化并且有人离开了化学实验室,那么ChemLabCount的html不会改变。
我已经验证了传入此方法的json是正确的。意思是,计数确实会改变。它只是没有显示在屏幕上。
jQuery .html()
是一个功能,而不是财产。
td.html(json[i].Count);
问题来自td.html = json[i].Count;
,因为它不是使用html()
方法的正确方法。
要将Count
设置为td
,您可以使用.text()
代替:
td.text( json[i].Count );
否则,如果要设置HTML代码,可以使用.html()
:
td.html( json[i].Count );