Javascript计时/循环问题

Javascript timing / loop issue?

本文关键字:问题 循环 计时 Javascript      更新时间:2023-09-26

我在这里有这段代码,它从数据库中抓取一些体育统计数据,并更新它们-当检测到变化时,我试图抛出警报(#scorealertdiv)。如果只有一个分数发生了变化,这就可以正常工作。当有多个更改时,它会显示错误的名称-它一直显示最后一个值,而不更改名称。

仍然是javascript/ajax的初学者和学习…请温柔一点。

谢谢!

function getscores() {
  $.post("/get_live_scores.php", {e: <?=$entryid;?>}, function(celldata) {
    data = jQuery.parseJSON(celldata);
    $.each(data, function(i,item) {
        var pname = data[i].pname;
        var cell = data[i].key;
        var save_val = data[i].save_val;
        var wins = data[i].wins;
        var shutouts = data[i].shutouts;
        var goals = data[i].goals;
        var assists = data[i].assists;
        var ht = data[i].ht;
        var gwg = data[i].gwg;
        if ($('td#'+cell+'_goals').text() < goals) {
            $('div#scorealert').html('Goal by '+data[i].pname);
            $('div#scorealert').animate({left: '0px'});
            $('div#scorealert').delay(4000).animate({left: '-300px'});
        }
        updatecell(pname, cell, save_val, wins, shutouts, goals, assists, ht, gwg); 

    });
    updatetotal();
  });
}    

我是诚实的;我不明白为什么它只显示第一个。据我所知,它应该显示最后一个。原因是:在每个循环中,您都在div上调用.html(),它将用新内容替换警报div的内容。除非.delay()函数也中断了计时?

我会使用.append()或其他非破坏性dom -add函数将你的进球得分者(等)添加到div中,然后在循环结束后调用动画(充满所有得分者)。

[编辑添加评论讨论的结果:]

由于.append()将它们全部添加到同一个div中(这不是期望的效果),因此将它们保留在不同的警报容器中的方法是根据需要动态创建这些容器。

请检查e: <?=$entryid;?>

是由php生成的吗?如果这是真的,PHP生成它并将其发送到浏览器后,它不会改变。所以你的javascript将总是得到相同的值,总是张贴相同的数据。