jquery每个函数写少一条记录

时间:2013-01-20 16:05:51

标签: jquery each

我有以下代码

$.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文件。 现在的问题是这段代码每次只写一个记录!有没有人看到我的问题?

3 个答案:

答案 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