• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

return wert

imoney91

Mitglied
Hallo,

ich steh mal wieder total auf dem Schlauch.
Meine Funktion ruft eine andere Funktion auf, die einen Return Wert zurückgibt. Abhängig von diesem Returnwert funktioniert alles andere.

Diese aufgerufene Methode sieht mit dem Return Wert so aus:
- Wenn ich in die IF Schleife gehe, dann funktioniert alles einwandfrei. Der Returnwert ist soweit richtig.
- Wenn ich in die Else Schleife gehe, dann ist der Returnwert auch korrekt, aber meine Funktion läuft nicht mehr, wie zuvor?! Obwohl die Returnwerte identisch sind?!

Ist es wegen der Verschachtelung durch Ajax?

Code:
  function savedPlace() {

        //hier getcookie überschreiben


      if(bookmarkID=="" || bookmarkID==null){
          var locus = {
              componentId: getCookie('component'),
              percent: getCookie('percent')
          }
          if (locus.componentId && locus.percent) {
              locus.componentId = decodeURIComponent(locus.componentId);
              locus.percent = parseFloat(locus.percent);
              alert(locus.percent);
              return locus;
          } else {
              return null;
          }
      }
      else{
          var comp;
          var per;
          //getBookmarkDescription(bookmarkID);
          // Request erzeugen
          if (window.XMLHttpRequest) {
              request = new XMLHttpRequest(); // Mozilla, Safari, Opera
          } else if (window.ActiveXObject) {
              try {
                  request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
              } catch (e) {
                  try {
                      request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
                  } catch (e) {}
              }
          }


          // überprüfen, ob Request erzeugt wurde
          if (!request) {
              alert("Kann keine XMLHTTP-Instanz erzeugen");
              return false;
          }
          else {
              request.open('get', "../../../readerFunction/getBookmarkCookieDesc.php?bm="+bookmarkID, true);
              request.send(null);
              request.onreadystatechange = function interpret(){
                  if(request.readyState =="4"){
                      if(request.status !=200){
                          //alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
                      }
                      else{
                          var jsonDescription = request.responseText;
                          object = JSON.parse(jsonDescription);
                          comp = object[0].comp;
                          per = object[0].per;
                      }
                      var locus = {
                          componentId: comp,
                          percent: per
                      }
                      locus.componentId = decodeURIComponent(locus.componentId);
                      locus.percent = parseFloat(locus.percent);
                      return locus;
                  }
              };
          }


      }


    }
 
Werbung:
Irgendwie passt das Codebeispiel nicht ganz zu dem Dropbox Screenshot. Also wenn es um locus{} geht, die ist lokal. Jede Variablen die Du innerhalb einer Funktion (in Deinem Falle savedPlace() ) mit dem var Statement initialisierst ist Lokal (Auf die Funktion bezogen). Es gibt in Javascript keinen Block-Scope wie in anderen Programmiersprachen.

Edit: Ich würde sämtliche Variablen im Functionheader definieren und initialisieren. Das ist gerade bei Javascript eine "good practice".
 
Werbung:
Zurück
Oben