Javascript计时/循环问题
Javascript timing / loop issue?
我在这里有这段代码,它从数据库中抓取一些体育统计数据,并更新它们-当检测到变化时,我试图抛出警报(#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将总是得到相同的值,总是张贴相同的数据。
相关文章:
- setInterval游戏循环的范围问题
- 在循环中附加事件处理程序时出现浏览器性能问题
- 动画、计时和运行循环等问题
- jQuery通过步骤的自排队循环来解决延迟问题
- '对于'循环,替换span标记的问题
- 循环的JavaScript排序问题
- HTML5音频循环出现问题
- 在qualtrics上使用javascript:循环块中的问题id
- 用于异步函数中的循环和定时问题
- Jquery图像循环问题
- I'我在react.js中编写for循环时遇到问题
- JavaScript + mocha:可能是在 for 循环中声明函数的闭包问题
- 循环映像 IE7 问题
- 循环的 JavaScript 性能问题
- 无限循环串联问题
- 循环 += 十进制变量的 javascript 有问题
- JavaScript的循环问题,将值插入数组将不起作用
- …的奇怪问题..循环中
- Ajax / Javascript问题.循环以前的请求
- 问题循环简单的javascript幻灯片与链接