2016-11-14 2 views
-2

Ich habe ein Ereignis über ein Dropdown-Menü. Jetzt, wenn dieses Ereignis eintritt, muss ich die Tabellendaten lesen und ändern. Ich lese Tabellendaten mit der Funktion $("table").each(function(){}); und ändere sie erneut mit demselben Code. Aber diese beiden Funktionen arbeiten parallel, während ich möchte, dass sie nacheinander ausgeführt werden. Mein Code scheint wie.Einer nach dem anderen Aufruf für dasselbe Ereignis in 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); 
}); 

Da $('table').each(function(){}); wird zweimal verwendet wird, es zur gleichen Zeit ausgeführt wird. Was soll ich machen? FYI: Alle console.log(results) geben mir den gleichen alten Wert der Ergebnisse Array, während, wenn ich console.log(results[i][j][2]) verwende es zeigt mir aktualisierte Informationen. Deshalb scheint es, als ob diese each() Funktionen gleichzeitig laufen, ohne zu aktualisieren.

+1

Sie werden einer nach dem anderen ausgeführt werden. – Rajesh

+0

Sie können nicht parallel arbeiten, Javascript ist single-threaded Zeigen Sie uns mehr Code nach [mcve] und geben Sie eine detaillierte Problembeschreibung sowie eine echte Erklärung dessen, was Sie mit diesem Code zu tun versuchen. Siehe [ask] – charlietfl

+0

Schwer, dies mental zu bewerten, ohne in Dev-Tools debuggen zu können. Eine Demo in jsfiddle, codepen, bottker oder anderen Sandbox würde helfen – charlietfl

Antwort

0

tun dies

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

Dies wird nicht die Ausführungsreihenfolge der "jeder" Instanzen vs OP-Code ändern, alles, was es effektiv macht, ist eine weniger dom Suche nach der Tabellen-Sammlung – charlietfl

Verwandte Themen