2016-10-20 33 views
-1

我已經經歷了很多stackoverflow帖子和其他網站找到解決這個問題,但沒有任何解決方案,我可以找到適合我的問題或只是直接沒有工作。爲什麼這個jQuery加載() - 命令重複?

我使用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

這是因爲'$ .fn.load()'是異步,完成回調內部設置的邏輯:'$(「表」)的負載。 (document.URL +'table',function(){/ *你的邏輯關於加載數據在這裏* /);' –

+0

我對js有點新...什麼是「完全回調」? – Reteras

+0

我編輯以前的評論,但不要忘記檢查[DOC](http://api.jquery.com/load/) –

回答

1

$.fn.load()是異步(默認情況下)。爲了處理有關數據加載任何邏輯,你可以使用完整的回調:

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