0

我有以下代码

$.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>");
     });
})

还有一个依赖文件(更新程序),它查询数据并返回 JSON 文件。现在的问题是这段代码每次少写一条记录!有人看到我的问题吗?

4

3 回答 3

1

解决方案:

只需删除此行:

var i = counterjson++;

您正在重新分配i给一个新变量。尝试另一个变量:

$.each(jsonData, function(i, value){
        var j = counterjson++;
于 2013-01-20T16:08:24.873 回答
0

i每次执行该代码块时都会增加变量。我认为这就是原因。

于 2013-01-20T16:08:39.070 回答
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使用索引填充第一个参数,因此您不应该手动跟踪它,并且使用适当的对象值填充第二个参数,因此您不需要手动检索它。如果你不打算使用它,你应该只使用 afor来清楚。

于 2013-01-20T16:11:20.537 回答