我有以下代码
$.getJSON('/update-recent-stat', function(jsonData)
{
var counterjson = 0;
$.each(jsonData, function(i, value){
var i = counterjson++;
var link = jsonData[i].linkid;
var time = jsonData[i].time;
var value = jsonData[i].tagvalue;
var type = jsonData[i].type;
var sender = jsonData[i].sender;
$("#DownBoxL ul li:eq("+ i +")").html("<div class=Timestamp>"+time+"</div><div class=UserName><a href=\"#"+link+"\">"+sender+"</a> <?php echo $lang['sending'] ?> "+type+"!</div><div class=TagValue>+"+value+"</div>");
});
})
还有一个依赖文件(updater),它查询数据并返回JSON文件。 现在的问题是这段代码每次只写一个记录!有没有人看到我的问题?
答案 0 :(得分:1)
解决方案:
只需删除此行:
var i = counterjson++;
您正在将i
重新分配给新变量。尝试另一个变量:
$.each(jsonData, function(i, value){
var j = counterjson++;
答案 1 :(得分:0)
每次执行该代码块时,都会递增i
变量。我想这就是原因。
答案 2 :(得分:0)
您应该有效地使用参数并执行以下操作:
$.each(jsonData, function(i, value){
var link = value.linkid;
var time = value.time;
var value = value.tagvalue; //<-- Shouldn't mask variables
var type = value.type;
var sender = value.sender;
$("#DownBoxL ul li:eq("+ i +")").html("<div class=Timestamp>"+time+"</div><div class=UserName><a href=\"#"+link+"\">"+sender+"</a> <?php echo $lang['sending'] ?> "+type+"!</div><div class=TagValue>+"+value+"</div>");
});
虽然你也可以删除作业,但只有一行。
$.each(jsonData, function(i, value){
$("#DownBoxL ul li:eq("+ i +")").html("<div class=Timestamp>"+value.time+"</div><div class=UserName><a href=\"#"+value.link+"\">"+value.sender+"</a> <?php echo $lang['sending'] ?> "+value.type+"!</div><div class=TagValue>+"+value.tagValue+"</div>");
});
each
用索引填充第一个参数,这样你就不应该手动跟踪它,而第二个参数带有适当的对象值,所以你不需要手动检索它。如果您不打算以自己的方式使用它,那么为了清晰起见,您应该使用for
。