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 ファイルを返す依存ファイル (アップデーター) もあります。ここでの問題は、このコードが毎回書き込むレコードが 1 つ少なくなることです! 誰かが私が抱えている問題を見ていますか?

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

割り当てを取り除いて、1 行だけにすることもできますが。

$.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最初の引数にインデックスを設定するため、手動で追跡する必要はありません。2 番目の引数には適切なオブジェクト値を設定するため、手動で取得する必要はありません。偶像的に使用するつもりがない場合はfor、明確にするために a を使用する必要があります。

于 2013-01-20T16:11:20.537 に答える