为什么这个jQuery load() - 命令重复了?

时间:2016-10-20 15:55:29

标签: javascript jquery

我已经浏览了很多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);
}

我的问题是,什么是/可能导致重复加载命令(或者为什么细胞根本不会保持黑色)? 有没有更好的方法来实现我想要做的事情? 我的代码示例可以以任何其他方式进行优化吗?

1 个答案:

答案 0 :(得分:1)

$.fn.load()是异步(默认情况下)。要处理有关已加载数据的任何逻辑,您可以使用完整的回调:

$('table').load(document.URL + ' table', function(){/* your logic regarding loaded data here*/);