我已经浏览了很多stackoverflow帖子和其他网站来找到这个问题的解决方案,但是我找不到任何解决方案或者只是直接找不到问题。
我使用javascript和jQuery(以及一些Java用于后台工作)在网站上构建页面。该页面包含一个包含数据的表(数据由Java处理),我想让该表每10秒刷新一次。这样可行。
但是现在我还要强调所有已更改其中值的单元格。为此,正如您在我的代码片段中看到的那样,我只是简单地将这些单元格的背景变为黑色。这也有效。
我的问题是颜色只会在改变回标准白色之前瞬间改变。使用控制台并玩了一下我能够发现该表实际上重新加载了两次,这对我来说必须意味着load-command被执行两次。
window.setInterval(function () {
if (frozen == false) {
$('table').load(document.URL + ' table');
var elem = document.getElementById("freezebtn"); //This is a button generated by Java Code
elem.style.background = getRandomColor();
var tab = document.getElementsByTagName('table').item(1);
var l = tab.rows.length;
for (var i = 0; i<l; i++) {
var tr = tab.rows[i];
var cll = tr.cells[1];
var check = tr.cells[0];
if(check.innerText === "getAsk") {
var valAsk = cll.innerText;
var ask = Number(valAsk);
if (ask != loadPreviousAsk()) {
console.log("TELEFONMAST!");
cll.style.backgroundColor = "#000000";
}
}
//Do this for every other Updateable Cell
...
}
cachePreviousValues(someValues,thatINeed,To,BeCached);
}
我的问题是,什么是/可能导致重复加载命令(或者为什么细胞根本不会保持黑色)? 有没有更好的方法来实现我想要做的事情? 我的代码示例可以以任何其他方式进行优化吗?
答案 0 :(得分:1)
$.fn.load()是异步(默认情况下)。要处理有关已加载数据的任何逻辑,您可以使用完整的回调:
$('table').load(document.URL + ' table', function(){/* your logic regarding loaded data here*/);