2016-11-14 17 views
-2

私はドロップダウンメニューの上にイベントがあります。今、このイベントが発生するたびに、私はテーブルデータを読んでそれを変更しなければなりません。私は$("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])を使用しているときは更新情報が表示されます。そのため、更新することなく、それらの機能が同時に実行されているようです。

+1

を行います。 – Rajesh

+0

彼らは並行して動作することはできません、javascriptはシングルスレッドです[mcve]のコードをもっと表示し、問題の詳細な説明と、このコードで何をしようとしているのかの本当の説明を提供してください。 [ask] – charlietfl

+0

devツールでデバッグできなくても精神的に評価するのは難しいです。 jsfiddle、codepen、plunker、または他のサンドボックスのデモが役に立ちます – charlietfl

答えて

0

は、彼らが次々に実行されます。この

$('table').each(function(){ 
    //Some data capture and alter data 
}).each(function(){ 
    //Modification in table data. 
}); 
+0

これは 'each'インスタンスとOPコードの実行順序を変更することはありません。 – charlietfl

関連する問題