2016-10-20 9 views
-1

私はこの問題の解決策を見つけるために多くのstackoverflowの投稿や他のウェブサイトを見てきましたが、私の問題にフィットするか、まっすぐに上手くいかなかった解決策もありませんでした。なぜこのjQuery load() - コマンドが繰り返されますか?

私は、ウェブサイト上にページを構築するためにjavascriptとjQuery(およびいくつかのJavaをバックグラウンドで使用しています)を使用しています。ページにはデータがあるテーブルが含まれています(データはJavaで処理されます)。そのテーブルを10秒ごとに更新します。それは動作します。

しかし、今では値を変更したすべてのセルを強調表示したいと思います。そのために、私のコードスニペットで見ているように、私は単にそれらのセルの背景を黒にするだけです。それも動作します。

私の問題は、標準的な白に戻す前に色が1秒間だけ変化することです。コンソールを使い、ちょっと遊んで、テーブルが実際に2回リロードされていることを知ることができました。ロードコマンドが2回実行されなければならないということです。

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); 
} 

私の質問は、/何をloadコマンドの繰り返しを引き起こしている可能性がありますされている(あるいは、なぜ細胞は、すべてでは黒のままではないでしょうか)? 私がやろうとしていることを達成する良い方法はありますか? 他の方法でコードサンプルを最適化できますか?

+0

'$の.fn.loadは()'非同期であるためだ、完全なコールバック内部のロジックを設定: '$(「テーブル」)ロード。 (document.URL + 'table'、function(){/ *読み込まれたデータに関するあなたのロジックはここにあります* /); ' –

+0

私はちょっと新しくjsです... "complete callback"とは何ですか? – Reteras

+0

私は以前のコメントを編集しましたが、[DOC](http://api.jquery.com/load/)を確認することを忘れないでください –

答えて

1

$.fn.load()は非同期(デフォルト)です。ロードされたデータに関するすべてのロジックを処理するには、完全なコールバックを使用することができます

$('table').load(document.URL + ' table', function(){/* your logic regarding loaded data here*/); 
関連する問題