2009-03-20 8 views
0

J'ai un objet "objets" json qui a peu d'éléments que je veux montrer 2 d'entre eux toutes les 2 secondes. Comment ferais-je cela? Ainsi, il affiche les éléments de division1 toutes les quelques secondes au lieu de les afficher tous en même temps. Par exemple. obtenir tous les articles toutes les 5 secondes et montrer 4 articles chaque seconde pour 20 articles.Comment afficher n éléments json toutes les x secondes en utilisant jquery?

<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

un peu plus clair à propos de ce que vous essayez de faire? –

+0

J'essaie d'afficher des éléments dans des tableaux séparés (appelés divisions ici), mais je veux montrer 3 ou 4 éléments à la fois, puis les parcourir. c'est-à-dire 0 à 2, 3 à 5 ... et ainsi de suite (si 3 est choisi). L'entrée complète est obtenue toutes les 10 secondes et ces divisions sont mises à jour toutes les secondes. – prasanna

Répondre

2

il serait probablement plus simple de cacher toutes les lignes, puis montrer une gamme d'entre eux chaque seconde avec quelque chose comme:

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

puis appelez avec

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

merci, ça fonctionne. Avez-vous une idée de la façon dont j'ai enroulé cela pour de nombreux noms de tables (d'une manière un peu propre)? – prasanna

+0

mis à jour pour travailler avec plusieurs tables, aussi un peu plus propre maintenant. – cobbal

0

setTimeout peut prendre une fonction comme premier argument, il peut alors profiter de la fermeture vars pour garder la trace des données et le nombre.

Questions connexes