2009-03-20 9 views
0

2秒ごとに2つずつ表示したい項目が少ないjsonオブジェクト 'items'があります。どうすればいい?そのため、一度にすべてを表示するのではなく、数秒ごとにdivision1にアイテムを表示します。例えば。すべてのアイテムを5秒ごとに取得し、1秒間に4つのアイテムを20個のアイテムで表示します。jqueryを使用してx秒ごとにn個のjson項目を表示するにはどうすればよいですか?

<table id="division1" > 
    <thead> 
     <th>Name</th> 
     <th>Score</th> 
    </thead> 
    <tbody></tbody> 
</table> 



function render_items(division){ 
    var tablebody =""; 
     $.each(division.items, function (i,item){ 
      var tablerow ="<tr>" 
       +"<td>"+item.name+"</td>" 
       +"<td>"+item.score+"</td>" 
       +"</tr>"; 
      tablebody = tablebody+tablerow; 

      //$('#test').append(division.name+' '+i+' '+robot.name+'<br>'); 
     } 
     ); 
     $('#'+division.name+" tbody").html(tablebody); 
} 

function poll(){ 
    $.post("data.php", {getvalues: 0}, 
    function (data, status){ 
     $.each (data.divisions, function(i,division){ 
      render_items(division);  

     }); 
    }, 
    'json' 
    ); 
    setTimeout('poll()',5000); 
} 

$(document).ready(function() { 
    poll(); 

} 
+0

とそれを呼び出しますあなたは何をしようとしているのですか? –

+0

私は別のテーブル(ここでは部門と呼ばれます)にアイテムを表示しようとしていますが、一度に3つまたは4つのアイテムを表示し、それらを繰り返していきたいと思います。すなわち0〜2,3〜5 ...(3が選択された場合)などである。完全な入力は10秒ごとに取得され、これらの部分は1秒ごとに更新されます。 – prasanna

答えて

2

それはおそらくのようなもので毎秒それらの範囲を示し、その後、すべての行を非表示にする最も簡単な次のようになります。

function startShow(table) { 
    var index = 0; 
    var trs = table.find("tbody tr"); 
    function update() { 
     if (index >= trs.length) { 
      index = 0; 
     } 
     trs.hide().slice(index, index + 4).show(); 
     index += 4; 
     setTimeout(update, 1000); 
    } 
    update(); 
} 

してから、もう少し明確にし

startShow($("#division1")); 
+0

ありがとう、それは動作します。どのように私がどのように多くのテーブル名のために(いくらか清潔な方法で)変更するか考えていますか? – prasanna

+0

は、複数のテーブルで動作するように更新されました。 – cobbal

0

setTimeoutは、最初の引数として関数をとることができるので、データとカウントを追跡するためにclosure varsを利用できます。

関連する問題