English 中文(简体)
我怎样使用jquery每隔x秒展示n个json项?
原标题:
  • 时间:2009-03-20 04:50:39
  •  标签:

我有一个JSON对象items,其中有几个我想每2秒显示2个的项。我该怎么做?因此,它会每隔几秒显示division1中的项,而不是一次性显示所有项。例如,每5秒获取所有项,并在20个项中每秒显示4项。

<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();
     
}
最佳回答

最简单的方法可能是隐藏所有行,然后使用类似以下语句的方法每秒钟显示一个范围的行:

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"));
问题回答

setTimeout可以将函数作为第一个参数,然后利用闭包变量来跟踪数据和计数。





相关问题
热门标签