как я показываю n элементов json каждые x секунд, используя jquery? - PullRequest
0 голосов
/ 20 марта 2009

У меня есть объект json 'items', в котором есть несколько элементов, из которых я хочу показывать 2 из них каждые 2 секунды. Как бы я это сделал? Таким образом, он отображает элементы в Division1 каждые несколько секунд, а не показывает все сразу. Например. получать все предметы каждые 5 секунд и показывать 4 предмета каждую секунду за 20 предметов.

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

}

Ответы [ 2 ]

2 голосов
/ 20 марта 2009

было бы проще всего спрятать все строки, а затем показывать их диапазон каждую секунду примерно так:

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 голосов
/ 20 марта 2009

setTimeout может принимать функцию в качестве первого аргумента, затем он может использовать переменные закрытия для отслеживания данных и количества.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...