2016-07-15 8 views
-1

Ich muss eine Funktion aufrufen, um eine Konto-ID zu senden, bevor ich ein Konto für den Benutzer abrufen konnte. In dieser Funktion muss ich überprüfen, ob die abgerufenen Konten auf der Benutzerseite bereits vorhanden sind, falls vorhanden, die Abfrage-ID erhöhen und die Funktion erneut ausführen, bis das abgerufene Konto für den Benutzer neu ist.Javascript: Wie schreibe und nenne ich eine rekursive Funktion?

Da die Funktion sich selbst nennen wird, denke ich, was ich tue, schreibt meine erste rekursive Funktion in meinem Leben.

Ich habe versucht:

<script> 
    function updateAcc(maxVal) { 

     $.post("accountUpdate.php", {maxVal:maxVal}, function(result){ 
      // get the retrieved account ID 
      var result=$(result); 
      pa.replaceWith(result); 
      var resultid=result.attr("data-topic-id"); 
      var testlength=$('*[data-topic-id="'+resultid+'"]').length; 
      // check if retrived account already exists on user's page 
      // if exists alraedy, increase the query ID, run the function again, retrieved new account ID,until there's no same accounts on users' side 
      if(testlength>1) { 
       maxVal++; 
       updateAcc(); 
      } 

      // alert(resultid); 
     }) 
    } 
    // envoke the function 
    updateAcc(maxVal) 
</script> 
+1

und ...... was funktioniert nicht? – madalinivascu

+2

Wenn Sie es rekursiv aufrufen, müssen Sie noch den Parameter 'maxVal' übergeben. – jfriend00

+0

für Funktionsaufruf -> updateAcc(); brauche Parameter maxVal – Rashid

Antwort

6

Statt dies zu tun,

if(testlength > 1) 
{ 
    maxVal++; 
    updateAcc(); 
} 

Sie

if(testlength > 1) 
{ 
    updateAcc(maxVal+1); 
} 

Auf diese Weise können Sie die Funktion mit maxVal um eins erhöht anrufen .

Der maxVal Parameter ist "einzigartig" für die iteration.