私はドロップダウンメニューの上にイベントがあります。今、このイベントが発生するたびに、私はテーブルデータを読んでそれを変更しなければなりません。私は$("table").each(function(){});
関数を使用してテーブルのデータを読み込み、再び同じコードを使用してテーブルのデータを変更しています。しかし、これらの両方の機能は並行して動作していますが、順番に実行する必要があります。 私のコードは次のようです。JavaScriptが同じイベントを繰り返し呼び出す
$(document).on('change','#rank-q1',function(){
$('#rank-q2').val('rank-asc');
var data=$(this).val().split('-');
var i=-1;
var j=0;
var k=0;
//console.log(results);
$("#tbody-emps tr").each(function(){
k++;
if($(this).find('td').length>6){
var temp=alasql('select '+data[1]+' from '+data[0]+' where '+tableChoice[data[0]]+' = ?',[results[i][j][1]])[0];
if(data[1]=='birthday' || data[1]=='grad'){
results[i][j][0]=Date.parse(temp[data[1]]);
}else{
results[i][j][0]=temp[data[1]];
}
results[i][j][2]=$(this).html();
console.log(results[i][j][2]); ///Note here
}else{
if(i>=0){
results[i].sort(function(a,b){
return a[0]>b[0]?-1:(a[0]<b[0]?1:0);
});
}
i++;
j=0;
}
});
results[i].sort(function(a,b){
return a[0]>b[0]?-1:(a[0]<b[0]?1:0);
});
console.log(results);
var i=-1,j=0;
$("#tbody-emps tr").each(function(){
if($(this).find('td').length>6){
$(this).html(results[i][j][2]);
j++;
}else{
i++;
j=0;
}
});
console.log(results);
});
$('table').each(function(){});
が2回使用されているため、同時に実行されます。私は何をすべきか? FYI:すべてconsole.log(results)
は私に結果の配列の同じ古い値を与えていますが、私がconsole.log(results[i][j][2])
を使用しているときは更新情報が表示されます。そのため、更新することなく、それらの機能が同時に実行されているようです。
を行います。 – Rajesh
彼らは並行して動作することはできません、javascriptはシングルスレッドです[mcve]のコードをもっと表示し、問題の詳細な説明と、このコードで何をしようとしているのかの本当の説明を提供してください。 [ask] – charlietfl
devツールでデバッグできなくても精神的に評価するのは難しいです。 jsfiddle、codepen、plunker、または他のサンドボックスのデモが役に立ちます – charlietfl